Data preparation
220 parsing failures.
row # A tibble: 5 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 301 NA date like %m/%d/%y Jun-07 row 2 302 NA date like %m/%d/%y Jun-07 col 3 303 NA date like %m/%d/%y Jun-07 expected 4 304 NA date like %m/%d/%y Jun-07 actual 5 305 NA date like %m/%d/%y Jun-07
... ................. ... ....................................... ........ ....................................... ...... ....................................... ... ....................................... ... ....................................... ........ ....................................... ...... .......................................
See problems(...) for more details.
80 parsing failures.
row # A tibble: 5 x 4 col row col expected actual expected <int> <int> <chr> <chr> actual 1 21 NA date like %m/%d/%y Jun-12 row 2 22 NA date like %m/%d/%y Jun-12 col 3 23 NA date like %m/%d/%y Jun-12 expected 4 24 NA date like %m/%d/%y Jun-12 actual 5 25 NA date like %m/%d/%y Jun-12
... ................. ... ....................................... ........ ....................................... ...... ....................................... ... ....................................... ... ....................................... ........ ....................................... ...... .......................................
See problems(...) for more details.
back to TOC
Analysis plan
For all studies we conduct exploratory factor analyses using Pearson correlations to find minimum residual solutions.
For each study, we first examine maximal unrotated and rotated solutions. To determine the maximum number of factors to extract, we use the following rule of thumb: With \(p\) observations per participant, we can extract a maximum of \(k\) factors, where \((p-k)*2 > p+k\), i.e., \(k < p/3\). Thus, with 40 mental capacity items, we can extract a maximum of 13 factors.
To determine how many factors to retain, we use the following preset retention criteria, considering the unrotated maximal solution (unless otherwise noted):
- Each factor must have an eigenvalue >1.0.
- Each factor must individually account for >5% of the total variance in the maximal model.
- After rotation, each factor must be the dominant factor (i.e., the factor with the highest factor loading) for ≥1 mental capacity item.
We then examine and interpret varimax-rotated solutions, extracting only the number of factors that meet these criteria.
Study 1
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: adults
- Date conducted: 2016-07-06 (MTurk)
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 4 and the number of components = 4

Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
angry 0.65 -0.04 -0.11 -0.03 0.05 0.22 -0.02 0.04 -0.10 0.17 0.02 -0.20 -0.09
beliefs 0.48 0.40 -0.16 -0.14 0.04 -0.38 0.18 0.09 0.07 0.04 -0.06 -0.09 -0.04
calm 0.68 -0.17 0.01 -0.08 -0.08 0.04 0.08 0.10 -0.04 0.02 -0.01 0.05 -0.07
choices 0.37 0.34 0.36 -0.20 0.06 0.09 -0.25 -0.20 0.12 -0.05 0.17 -0.07 -0.05
communicating 0.11 0.62 0.18 0.14 -0.18 0.30 0.11 0.18 0.15 -0.05 -0.08 -0.01 -0.03
computations -0.33 0.82 -0.07 0.14 -0.03 0.00 -0.02 0.04 0.03 0.00 0.03 -0.06 -0.03
conscious 0.44 0.10 0.44 -0.11 0.17 -0.11 -0.24 0.06 0.08 -0.19 -0.15 -0.21 0.05
depressed 0.74 0.04 -0.37 0.04 -0.14 0.04 -0.17 -0.04 -0.21 -0.05 -0.02 0.06 -0.03
depth 0.26 0.27 0.48 0.28 0.12 -0.09 -0.16 -0.09 0.04 -0.08 -0.10 -0.13 -0.02
desires 0.66 -0.17 0.10 -0.02 -0.03 -0.02 0.35 -0.48 0.13 -0.14 -0.08 0.02 -0.07
disrespected 0.63 0.06 -0.35 0.16 0.07 0.07 -0.13 -0.03 -0.07 -0.03 -0.07 -0.02 0.02
embarrassed 0.52 0.14 -0.40 0.19 0.48 0.18 0.11 0.11 0.12 -0.03 0.09 0.12 0.07
emo_recog 0.37 0.39 -0.10 -0.10 0.01 -0.27 -0.09 0.10 0.04 0.08 -0.14 0.14 0.11
fear 0.72 -0.39 0.14 0.03 -0.18 0.07 0.09 0.12 -0.03 0.13 -0.04 -0.16 0.15
free_will 0.31 0.30 0.32 -0.40 0.15 0.22 -0.07 -0.19 -0.05 0.27 0.10 0.08 0.00
goal 0.41 0.21 0.19 -0.11 0.07 -0.11 0.18 -0.08 0.02 -0.03 0.07 -0.14 0.15
guilt 0.62 0.14 -0.41 0.21 0.43 0.14 0.04 0.02 0.08 0.00 -0.03 -0.03 -0.05
happy 0.76 0.00 -0.33 -0.08 -0.22 0.08 -0.15 -0.03 -0.08 -0.04 -0.08 -0.04 -0.08
hungry 0.55 -0.71 0.22 -0.03 0.08 -0.02 0.06 0.02 0.03 0.03 0.05 0.07 0.01
intentions 0.19 0.62 0.02 -0.16 0.01 0.07 0.26 0.00 -0.20 0.00 0.09 -0.01 0.18
joy 0.76 0.01 -0.39 0.10 -0.17 -0.01 -0.08 -0.07 0.05 0.00 -0.03 0.09 -0.01
love 0.75 0.11 -0.28 0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08 0.00 0.08 0.07
morality 0.31 0.50 -0.13 0.02 -0.07 -0.19 0.08 0.05 -0.04 0.00 0.18 -0.10 0.10
nauseated 0.65 -0.32 0.14 0.08 -0.16 0.05 0.01 -0.06 0.14 0.03 0.03 0.04 0.05
odors 0.49 -0.35 0.37 0.05 0.15 -0.09 -0.03 0.10 0.07 0.01 -0.03 0.11 0.05
pain 0.63 -0.52 0.19 -0.01 -0.04 0.11 0.11 0.19 0.05 -0.01 0.09 -0.01 -0.14
personality 0.44 0.36 -0.19 -0.13 -0.03 -0.27 0.01 0.00 0.24 0.20 -0.06 0.09 -0.17
pleasure 0.69 -0.23 -0.07 0.15 -0.15 -0.08 -0.15 0.06 0.16 -0.06 0.21 0.09 0.18
pride 0.68 0.18 -0.42 0.08 0.04 0.04 0.01 -0.08 -0.14 0.05 -0.06 -0.16 0.01
reasoning 0.34 0.44 0.31 -0.16 0.01 0.21 -0.11 0.01 0.08 0.20 -0.21 0.09 0.12
recognizing 0.10 0.76 0.12 0.13 -0.21 0.15 0.11 0.11 0.15 -0.02 0.00 -0.02 -0.12
remembering 0.14 0.66 0.16 0.10 -0.15 0.13 0.01 -0.05 0.03 -0.15 0.04 0.09 0.10
safe 0.71 -0.29 0.21 -0.12 -0.03 -0.06 0.04 0.06 -0.03 0.09 -0.13 -0.04 0.07
seeing 0.33 0.15 0.50 0.28 0.08 -0.03 -0.07 -0.01 -0.11 -0.01 0.07 0.09 -0.08
self_aware 0.46 0.18 0.22 -0.30 0.09 0.00 0.12 0.13 -0.20 -0.28 -0.21 0.15 -0.07
self_restraint 0.43 0.35 -0.05 -0.15 0.04 -0.19 -0.08 0.07 0.00 0.02 0.17 -0.04 -0.14
sounds 0.27 0.20 0.42 0.38 -0.06 -0.02 0.06 -0.07 -0.11 0.12 -0.07 0.08 0.01
temperature 0.30 0.19 0.46 0.40 0.05 -0.22 0.04 0.00 -0.26 0.12 0.09 0.06 -0.09
thoughts 0.55 0.18 0.10 -0.37 -0.01 0.04 -0.04 0.10 -0.09 -0.15 0.19 0.09 -0.05
tired 0.69 -0.34 0.23 0.07 -0.06 0.05 0.06 0.08 0.07 -0.07 0.09 -0.11 -0.05
h2 u2 com
angry 0.58 0.42 1.8
beliefs 0.64 0.36 4.0
calm 0.54 0.46 1.3
choices 0.59 0.41 6.1
communicating 0.65 0.35 2.6
computations 0.81 0.19 1.4
conscious 0.63 0.37 4.6
depressed 0.79 0.21 2.0
depth 0.53 0.47 4.1
desires 0.87 0.13 2.9
disrespected 0.59 0.41 2.0
embarrassed 0.82 0.18 4.3
emo_recog 0.46 0.54 4.3
fear 0.82 0.18 2.3
free_will 0.65 0.35 6.8
goal 0.36 0.64 4.0
guilt 0.84 0.16 3.3
happy 0.80 0.20 1.8
hungry 0.88 0.12 2.2
intentions 0.60 0.40 2.3
joy 0.79 0.21 1.8
love 0.71 0.29 1.6
morality 0.46 0.54 2.9
nauseated 0.61 0.39 2.0
odors 0.56 0.44 3.4
pain 0.80 0.20 2.7
personality 0.59 0.41 5.2
pleasure 0.72 0.28 2.3
pride 0.74 0.26 2.2
reasoning 0.60 0.40 5.4
recognizing 0.75 0.25 1.7
remembering 0.58 0.42 1.7
safe 0.68 0.32 1.8
seeing 0.50 0.50 3.1
self_aware 0.60 0.40 5.6
self_restraint 0.43 0.57 3.5
sounds 0.48 0.52 4.0
temperature 0.65 0.35 4.8
thoughts 0.57 0.43 2.9
tired 0.70 0.30 2.0
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38 0.32
Proportion Var 0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64 0.65
Proportion Explained 0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01
Cumulative Proportion 0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00
Mean item complexity = 3.1
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.41
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 93.35 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 424.01 with prob < 0.001
Tucker Lewis Index of factoring reliability = 0.951
RMSEA index = 0.046 and the 90 % confidence intervals are 0.024 0.046
BIC = -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9
Correlation of scores with factors 0.99 0.98 0.95 0.88 0.89 0.84 0.83 0.85 0.78
Multiple R square of scores with factors 0.98 0.95 0.91 0.77 0.79 0.70 0.70 0.73 0.61
Minimum correlation of possible factor scores 0.95 0.90 0.82 0.55 0.59 0.40 0.39 0.45 0.23
MR10 MR11 MR12 MR13
Correlation of scores with factors 0.75 0.73 0.74 0.71
Multiple R square of scores with factors 0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores 0.14 0.08 0.08 0.00
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
angry 0.65 -0.04 -0.11 -0.03 0.05 0.22 -0.02 0.04 -0.10 0.17 0.02 -0.20 -0.09
beliefs 0.48 0.40 -0.16 -0.14 0.04 -0.38 0.18 0.09 0.07 0.04 -0.06 -0.09 -0.04
calm 0.68 -0.17 0.01 -0.08 -0.08 0.04 0.08 0.10 -0.04 0.02 -0.01 0.05 -0.07
choices 0.37 0.34 0.36 -0.20 0.06 0.09 -0.25 -0.20 0.12 -0.05 0.17 -0.07 -0.05
communicating 0.11 0.62 0.18 0.14 -0.18 0.30 0.11 0.18 0.15 -0.05 -0.08 -0.01 -0.03
computations -0.33 0.82 -0.07 0.14 -0.03 0.00 -0.02 0.04 0.03 0.00 0.03 -0.06 -0.03
conscious 0.44 0.10 0.44 -0.11 0.17 -0.11 -0.24 0.06 0.08 -0.19 -0.15 -0.21 0.05
depressed 0.74 0.04 -0.37 0.04 -0.14 0.04 -0.17 -0.04 -0.21 -0.05 -0.02 0.06 -0.03
depth 0.26 0.27 0.48 0.28 0.12 -0.09 -0.16 -0.09 0.04 -0.08 -0.10 -0.13 -0.02
desires 0.66 -0.17 0.10 -0.02 -0.03 -0.02 0.35 -0.48 0.13 -0.14 -0.08 0.02 -0.07
disrespected 0.63 0.06 -0.35 0.16 0.07 0.07 -0.13 -0.03 -0.07 -0.03 -0.07 -0.02 0.02
embarrassed 0.52 0.14 -0.40 0.19 0.48 0.18 0.11 0.11 0.12 -0.03 0.09 0.12 0.07
emo_recog 0.37 0.39 -0.10 -0.10 0.01 -0.27 -0.09 0.10 0.04 0.08 -0.14 0.14 0.11
fear 0.72 -0.39 0.14 0.03 -0.18 0.07 0.09 0.12 -0.03 0.13 -0.04 -0.16 0.15
free_will 0.31 0.30 0.32 -0.40 0.15 0.22 -0.07 -0.19 -0.05 0.27 0.10 0.08 0.00
goal 0.41 0.21 0.19 -0.11 0.07 -0.11 0.18 -0.08 0.02 -0.03 0.07 -0.14 0.15
guilt 0.62 0.14 -0.41 0.21 0.43 0.14 0.04 0.02 0.08 0.00 -0.03 -0.03 -0.05
happy 0.76 0.00 -0.33 -0.08 -0.22 0.08 -0.15 -0.03 -0.08 -0.04 -0.08 -0.04 -0.08
hungry 0.55 -0.71 0.22 -0.03 0.08 -0.02 0.06 0.02 0.03 0.03 0.05 0.07 0.01
intentions 0.19 0.62 0.02 -0.16 0.01 0.07 0.26 0.00 -0.20 0.00 0.09 -0.01 0.18
joy 0.76 0.01 -0.39 0.10 -0.17 -0.01 -0.08 -0.07 0.05 0.00 -0.03 0.09 -0.01
love 0.75 0.11 -0.28 0.09 -0.07 -0.09 -0.07 -0.14 -0.03 -0.08 0.00 0.08 0.07
morality 0.31 0.50 -0.13 0.02 -0.07 -0.19 0.08 0.05 -0.04 0.00 0.18 -0.10 0.10
nauseated 0.65 -0.32 0.14 0.08 -0.16 0.05 0.01 -0.06 0.14 0.03 0.03 0.04 0.05
odors 0.49 -0.35 0.37 0.05 0.15 -0.09 -0.03 0.10 0.07 0.01 -0.03 0.11 0.05
pain 0.63 -0.52 0.19 -0.01 -0.04 0.11 0.11 0.19 0.05 -0.01 0.09 -0.01 -0.14
personality 0.44 0.36 -0.19 -0.13 -0.03 -0.27 0.01 0.00 0.24 0.20 -0.06 0.09 -0.17
pleasure 0.69 -0.23 -0.07 0.15 -0.15 -0.08 -0.15 0.06 0.16 -0.06 0.21 0.09 0.18
pride 0.68 0.18 -0.42 0.08 0.04 0.04 0.01 -0.08 -0.14 0.05 -0.06 -0.16 0.01
reasoning 0.34 0.44 0.31 -0.16 0.01 0.21 -0.11 0.01 0.08 0.20 -0.21 0.09 0.12
recognizing 0.10 0.76 0.12 0.13 -0.21 0.15 0.11 0.11 0.15 -0.02 0.00 -0.02 -0.12
remembering 0.14 0.66 0.16 0.10 -0.15 0.13 0.01 -0.05 0.03 -0.15 0.04 0.09 0.10
safe 0.71 -0.29 0.21 -0.12 -0.03 -0.06 0.04 0.06 -0.03 0.09 -0.13 -0.04 0.07
seeing 0.33 0.15 0.50 0.28 0.08 -0.03 -0.07 -0.01 -0.11 -0.01 0.07 0.09 -0.08
self_aware 0.46 0.18 0.22 -0.30 0.09 0.00 0.12 0.13 -0.20 -0.28 -0.21 0.15 -0.07
self_restraint 0.43 0.35 -0.05 -0.15 0.04 -0.19 -0.08 0.07 0.00 0.02 0.17 -0.04 -0.14
sounds 0.27 0.20 0.42 0.38 -0.06 -0.02 0.06 -0.07 -0.11 0.12 -0.07 0.08 0.01
temperature 0.30 0.19 0.46 0.40 0.05 -0.22 0.04 0.00 -0.26 0.12 0.09 0.06 -0.09
thoughts 0.55 0.18 0.10 -0.37 -0.01 0.04 -0.04 0.10 -0.09 -0.15 0.19 0.09 -0.05
tired 0.69 -0.34 0.23 0.07 -0.06 0.05 0.06 0.08 0.07 -0.07 0.09 -0.11 -0.05
h2 u2 com
angry 0.58 0.42 1.8
beliefs 0.64 0.36 4.0
calm 0.54 0.46 1.3
choices 0.59 0.41 6.1
communicating 0.65 0.35 2.6
computations 0.81 0.19 1.4
conscious 0.63 0.37 4.6
depressed 0.79 0.21 2.0
depth 0.53 0.47 4.1
desires 0.87 0.13 2.9
disrespected 0.59 0.41 2.0
embarrassed 0.82 0.18 4.3
emo_recog 0.46 0.54 4.3
fear 0.82 0.18 2.3
free_will 0.65 0.35 6.8
goal 0.36 0.64 4.0
guilt 0.84 0.16 3.3
happy 0.80 0.20 1.8
hungry 0.88 0.12 2.2
intentions 0.60 0.40 2.3
joy 0.79 0.21 1.8
love 0.71 0.29 1.6
morality 0.46 0.54 2.9
nauseated 0.61 0.39 2.0
odors 0.56 0.44 3.4
pain 0.80 0.20 2.7
personality 0.59 0.41 5.2
pleasure 0.72 0.28 2.3
pride 0.74 0.26 2.2
reasoning 0.60 0.40 5.4
recognizing 0.75 0.25 1.7
remembering 0.58 0.42 1.7
safe 0.68 0.32 1.8
seeing 0.50 0.50 3.1
self_aware 0.60 0.40 5.6
self_restraint 0.43 0.57 3.5
sounds 0.48 0.52 4.0
temperature 0.65 0.35 4.8
thoughts 0.57 0.43 2.9
tired 0.70 0.30 2.0
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 11.03 5.51 3.15 1.29 0.87 0.84 0.64 0.56 0.51 0.46 0.43 0.38 0.32
Proportion Var 0.28 0.14 0.08 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.28 0.41 0.49 0.52 0.55 0.57 0.58 0.60 0.61 0.62 0.63 0.64 0.65
Proportion Explained 0.42 0.21 0.12 0.05 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01
Cumulative Proportion 0.42 0.64 0.76 0.81 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00
Mean item complexity = 3.1
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.41
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 93.35 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 424.01 with prob < 0.001
Tucker Lewis Index of factoring reliability = 0.951
RMSEA index = 0.046 and the 90 % confidence intervals are 0.024 0.046
BIC = -1366.82
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9
Correlation of scores with factors 0.99 0.98 0.95 0.88 0.89 0.84 0.83 0.85 0.78
Multiple R square of scores with factors 0.98 0.95 0.91 0.77 0.79 0.70 0.70 0.73 0.61
Minimum correlation of possible factor scores 0.95 0.90 0.82 0.55 0.59 0.40 0.39 0.45 0.23
MR10 MR11 MR12 MR13
Correlation of scores with factors 0.75 0.73 0.74 0.71
Multiple R square of scores with factors 0.57 0.54 0.54 0.50
Minimum correlation of possible factor scores 0.14 0.08 0.08 0.00
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = nfactors_d1_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.51 0.38 0.14 0.43 0.57 2.0
beliefs 0.55 -0.05 0.30 0.40 0.60 1.6
calm 0.43 0.54 0.16 0.50 0.50 2.1
choices 0.14 0.08 0.58 0.36 0.64 1.2
communicating 0.15 -0.32 0.53 0.41 0.59 1.8
computations 0.06 -0.83 0.33 0.80 0.20 1.3
conscious 0.07 0.32 0.52 0.37 0.63 1.7
depressed 0.77 0.29 0.04 0.68 0.32 1.3
depth -0.04 0.10 0.58 0.35 0.65 1.1
desires 0.35 0.52 0.21 0.44 0.56 2.1
disrespected 0.69 0.22 0.03 0.53 0.47 1.2
embarrassed 0.62 0.09 0.01 0.39 0.61 1.0
emo_recog 0.44 -0.09 0.30 0.29 0.71 1.9
fear 0.31 0.75 0.13 0.68 0.32 1.4
free_will 0.12 0.06 0.49 0.25 0.75 1.1
goal 0.23 0.14 0.42 0.25 0.75 1.8
guilt 0.71 0.14 0.04 0.53 0.47 1.1
happy 0.75 0.35 0.05 0.68 0.32 1.4
hungry 0.03 0.93 -0.06 0.87 0.13 1.0
intentions 0.31 -0.33 0.45 0.41 0.59 2.6
joy 0.79 0.31 0.01 0.73 0.27 1.3
love 0.75 0.28 0.15 0.66 0.34 1.4
morality 0.45 -0.22 0.32 0.36 0.64 2.3
nauseated 0.27 0.67 0.15 0.54 0.46 1.4
odors 0.01 0.66 0.24 0.50 0.50 1.2
pain 0.17 0.81 0.06 0.70 0.30 1.1
personality 0.53 -0.06 0.25 0.34 0.66 1.4
pleasure 0.46 0.55 0.07 0.51 0.49 2.0
pride 0.81 0.14 0.07 0.68 0.32 1.1
reasoning 0.18 -0.02 0.60 0.39 0.61 1.2
recognizing 0.22 -0.45 0.58 0.59 0.41 2.2
remembering 0.19 -0.35 0.57 0.48 0.52 1.9
safe 0.29 0.70 0.24 0.63 0.37 1.6
seeing -0.04 0.24 0.56 0.37 0.63 1.4
self_aware 0.23 0.21 0.41 0.27 0.73 2.1
self_restraint 0.44 -0.01 0.34 0.30 0.70 1.9
sounds -0.01 0.14 0.50 0.27 0.73 1.2
temperature -0.01 0.18 0.52 0.30 0.70 1.2
thoughts 0.38 0.22 0.37 0.33 0.67 2.6
tired 0.24 0.74 0.22 0.64 0.36 1.4
MR1 MR2 MR3
SS loadings 7.18 7.13 4.91
Proportion Var 0.18 0.18 0.12
Cumulative Var 0.18 0.36 0.48
Proportion Explained 0.37 0.37 0.26
Cumulative Proportion 0.37 0.74 1.00
Mean item complexity = 1.6
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 663 and the objective function was 6.67
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 196 with the empirical chi square 729.79 with prob < 0.036
The total number of observations was 200 with Likelihood Chi Square = 1219.34 with prob < 2.1e-35
Tucker Lewis Index of factoring reliability = 0.846
RMSEA index = 0.071 and the 90 % confidence intervals are 0.059 NA
BIC = -2293.44
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.96 0.98 0.94
Multiple R square of scores with factors 0.93 0.96 0.88
Minimum correlation of possible factor scores 0.85 0.91 0.76
back to TOC
Study 2
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: June - December 2016
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
angry 0.57 -0.17 -0.04 -0.07 0.05 0.16 0.11 0.06 -0.04 0.01 -0.04 0.02 -0.16
beliefs 0.54 0.23 -0.07 -0.09 0.05 0.24 -0.12 -0.05 -0.01 0.13 0.06 0.08 0.21
calm 0.55 -0.07 0.01 0.02 -0.10 -0.09 -0.14 0.05 -0.01 -0.18 0.10 -0.02 0.10
choices 0.43 0.05 0.26 -0.38 -0.07 0.20 -0.05 -0.13 0.11 0.05 -0.15 0.16 -0.09
communicating 0.09 0.30 0.16 0.30 -0.17 0.03 0.19 0.11 0.29 0.04 0.04 -0.02 -0.12
computations -0.01 0.80 -0.04 0.02 0.08 0.10 -0.09 0.03 0.10 -0.11 0.08 0.10 0.00
conscious 0.36 0.08 0.48 0.21 -0.14 0.01 0.16 -0.12 -0.27 -0.14 -0.04 -0.12 0.01
depressed 0.69 -0.11 -0.13 0.05 -0.06 -0.13 0.12 0.06 0.21 -0.09 -0.15 -0.01 0.00
depth 0.14 0.22 0.36 0.12 0.34 0.02 -0.14 -0.07 -0.02 0.02 0.17 -0.15 -0.07
desires 0.52 -0.19 -0.03 -0.01 -0.08 0.21 -0.07 -0.04 0.02 0.10 0.03 -0.17 0.15
disrespected 0.69 0.00 -0.11 -0.07 -0.03 -0.02 0.16 -0.16 -0.09 0.03 0.10 0.09 0.08
embarrassed 0.53 0.03 -0.30 0.10 0.22 0.34 0.23 -0.06 -0.01 -0.03 0.02 -0.13 -0.05
emo_recog 0.34 0.50 -0.05 0.09 0.11 -0.07 0.22 0.14 -0.09 0.07 -0.02 0.13 0.05
fear 0.55 -0.37 0.11 0.11 -0.08 0.03 0.01 0.17 0.09 0.03 -0.06 -0.25 -0.09
free_will 0.49 0.00 0.32 -0.22 -0.09 0.11 -0.21 -0.18 0.08 0.03 -0.02 -0.03 -0.10
goal 0.35 0.31 -0.03 -0.09 -0.06 0.10 -0.11 0.22 0.02 -0.18 -0.25 -0.04 0.14
guilt 0.58 0.07 -0.18 0.13 0.25 0.19 -0.07 -0.10 -0.07 -0.08 0.14 -0.05 -0.03
happy 0.72 0.09 -0.20 0.18 -0.20 -0.06 -0.01 -0.13 0.09 -0.03 0.12 0.05 -0.09
hungry 0.38 -0.77 0.22 0.02 0.14 -0.04 0.01 -0.08 0.06 0.05 0.00 0.03 0.01
intentions 0.35 0.40 0.15 -0.24 0.11 0.03 0.02 -0.12 0.09 -0.14 0.08 0.05 -0.12
joy 0.70 0.00 -0.26 0.10 -0.18 -0.10 -0.03 -0.05 0.06 -0.01 0.05 0.11 0.02
love 0.60 0.03 -0.20 0.11 0.03 -0.11 0.09 -0.19 -0.05 0.05 0.07 0.03 0.14
morality 0.44 0.37 -0.13 -0.08 0.21 -0.26 -0.05 0.26 -0.18 0.33 0.07 0.03 -0.09
nauseated 0.30 -0.43 0.06 0.11 0.27 0.05 0.00 0.07 0.16 0.06 -0.10 0.02 0.08
odors 0.15 -0.53 0.38 0.06 0.09 0.12 -0.06 0.16 0.06 0.03 0.19 0.09 -0.06
pain 0.45 -0.64 0.21 -0.06 0.07 -0.09 -0.05 -0.04 -0.01 0.10 -0.01 0.06 0.08
personality 0.54 0.29 -0.01 -0.12 0.20 0.12 0.01 0.18 -0.01 0.06 -0.09 0.00 0.09
pleasure 0.60 0.04 -0.18 0.10 -0.23 -0.17 -0.31 0.04 0.01 -0.04 0.08 -0.09 -0.02
pride 0.68 0.14 -0.31 0.06 -0.05 -0.02 0.01 -0.04 -0.01 -0.04 -0.03 0.01 -0.15
reasoning 0.23 0.28 0.36 0.05 -0.16 -0.01 -0.05 0.01 0.05 0.12 -0.06 -0.11 0.22
recognizing 0.20 0.32 0.13 0.10 0.11 0.00 -0.11 0.21 0.06 0.00 0.04 -0.14 0.05
remembering 0.06 0.58 0.17 0.13 -0.05 0.00 0.01 -0.17 0.19 0.28 -0.24 -0.03 -0.08
safe 0.58 -0.08 0.23 0.06 -0.06 -0.06 -0.19 0.16 -0.24 0.00 -0.10 0.09 -0.22
seeing -0.07 0.13 0.26 -0.03 -0.19 -0.08 0.19 -0.08 0.02 0.27 0.20 -0.08 0.02
self_aware 0.27 0.21 0.46 -0.03 -0.10 0.09 0.23 0.00 -0.31 -0.10 -0.09 -0.03 0.01
self_restraint 0.34 0.19 0.15 -0.56 0.11 -0.33 0.20 0.05 0.17 -0.16 0.15 -0.19 0.01
sounds -0.07 0.10 0.40 0.10 -0.18 0.23 0.08 0.23 0.14 -0.08 0.25 0.23 0.06
temperature -0.05 0.34 0.41 0.31 0.34 -0.26 -0.15 -0.23 0.08 -0.15 -0.09 0.08 0.04
thoughts 0.57 0.01 0.18 -0.05 -0.11 -0.16 -0.03 0.03 -0.09 0.03 -0.03 0.15 0.08
tired 0.39 -0.35 0.07 0.11 0.16 -0.16 0.24 0.06 0.12 -0.07 -0.11 0.12 0.05
h2 u2 com
angry 0.44 0.56 1.7
beliefs 0.50 0.50 2.8
calm 0.40 0.60 1.8
choices 0.54 0.46 4.6
communicating 0.40 0.60 5.9
computations 0.71 0.29 1.2
conscious 0.58 0.42 4.2
depressed 0.63 0.37 1.7
depth 0.41 0.59 4.8
desires 0.42 0.58 2.3
disrespected 0.58 0.42 1.4
embarrassed 0.63 0.37 3.7
emo_recog 0.49 0.51 3.1
fear 0.58 0.42 2.9
free_will 0.51 0.49 3.5
goal 0.42 0.58 5.4
guilt 0.53 0.47 2.4
happy 0.69 0.31 1.8
hungry 0.81 0.19 1.8
intentions 0.43 0.57 4.2
joy 0.62 0.38 1.6
love 0.50 0.50 1.9
morality 0.69 0.31 5.9
nauseated 0.42 0.58 3.6
odors 0.55 0.45 3.0
pain 0.70 0.30 2.3
personality 0.50 0.50 2.6
pleasure 0.60 0.40 2.5
pride 0.61 0.39 1.7
reasoning 0.37 0.63 4.8
recognizing 0.26 0.74 4.7
remembering 0.59 0.41 2.8
safe 0.59 0.41 2.8
seeing 0.30 0.70 6.0
self_aware 0.52 0.48 4.2
self_restraint 0.76 0.24 4.5
sounds 0.47 0.53 5.6
temperature 0.68 0.32 6.4
thoughts 0.44 0.56 1.8
tired 0.45 0.55 4.7
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44 0.40
Proportion Var 0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52 0.53
Proportion Explained 0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98 1.00
Mean item complexity = 3.4
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.79
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 142.71 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 314.7 with prob < 0.81
Tucker Lewis Index of factoring reliability = 1.024
RMSEA index = 0.016 and the 90 % confidence intervals are 0 0.018
BIC = -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9
Correlation of scores with factors 0.98 0.96 0.91 0.86 0.83 0.83 0.79 0.77 0.77
Multiple R square of scores with factors 0.95 0.93 0.83 0.74 0.69 0.68 0.62 0.60 0.59
Minimum correlation of possible factor scores 0.90 0.86 0.67 0.48 0.38 0.36 0.23 0.19 0.18
MR10 MR11 MR12 MR13
Correlation of scores with factors 0.75 0.73 0.71 0.67
Multiple R square of scores with factors 0.56 0.53 0.50 0.45
Minimum correlation of possible factor scores 0.12 0.06 0.00 -0.10
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
angry 0.57 -0.17 -0.04 -0.07 0.05 0.16 0.11 0.06 -0.04 0.01 -0.04 0.02 -0.16
beliefs 0.54 0.23 -0.07 -0.09 0.05 0.24 -0.12 -0.05 -0.01 0.13 0.06 0.08 0.21
calm 0.55 -0.07 0.01 0.02 -0.10 -0.09 -0.14 0.05 -0.01 -0.18 0.10 -0.02 0.10
choices 0.43 0.05 0.26 -0.38 -0.07 0.20 -0.05 -0.13 0.11 0.05 -0.15 0.16 -0.09
communicating 0.09 0.30 0.16 0.30 -0.17 0.03 0.19 0.11 0.29 0.04 0.04 -0.02 -0.12
computations -0.01 0.80 -0.04 0.02 0.08 0.10 -0.09 0.03 0.10 -0.11 0.08 0.10 0.00
conscious 0.36 0.08 0.48 0.21 -0.14 0.01 0.16 -0.12 -0.27 -0.14 -0.04 -0.12 0.01
depressed 0.69 -0.11 -0.13 0.05 -0.06 -0.13 0.12 0.06 0.21 -0.09 -0.15 -0.01 0.00
depth 0.14 0.22 0.36 0.12 0.34 0.02 -0.14 -0.07 -0.02 0.02 0.17 -0.15 -0.07
desires 0.52 -0.19 -0.03 -0.01 -0.08 0.21 -0.07 -0.04 0.02 0.10 0.03 -0.17 0.15
disrespected 0.69 0.00 -0.11 -0.07 -0.03 -0.02 0.16 -0.16 -0.09 0.03 0.10 0.09 0.08
embarrassed 0.53 0.03 -0.30 0.10 0.22 0.34 0.23 -0.06 -0.01 -0.03 0.02 -0.13 -0.05
emo_recog 0.34 0.50 -0.05 0.09 0.11 -0.07 0.22 0.14 -0.09 0.07 -0.02 0.13 0.05
fear 0.55 -0.37 0.11 0.11 -0.08 0.03 0.01 0.17 0.09 0.03 -0.06 -0.25 -0.09
free_will 0.49 0.00 0.32 -0.22 -0.09 0.11 -0.21 -0.18 0.08 0.03 -0.02 -0.03 -0.10
goal 0.35 0.31 -0.03 -0.09 -0.06 0.10 -0.11 0.22 0.02 -0.18 -0.25 -0.04 0.14
guilt 0.58 0.07 -0.18 0.13 0.25 0.19 -0.07 -0.10 -0.07 -0.08 0.14 -0.05 -0.03
happy 0.72 0.09 -0.20 0.18 -0.20 -0.06 -0.01 -0.13 0.09 -0.03 0.12 0.05 -0.09
hungry 0.38 -0.77 0.22 0.02 0.14 -0.04 0.01 -0.08 0.06 0.05 0.00 0.03 0.01
intentions 0.35 0.40 0.15 -0.24 0.11 0.03 0.02 -0.12 0.09 -0.14 0.08 0.05 -0.12
joy 0.70 0.00 -0.26 0.10 -0.18 -0.10 -0.03 -0.05 0.06 -0.01 0.05 0.11 0.02
love 0.60 0.03 -0.20 0.11 0.03 -0.11 0.09 -0.19 -0.05 0.05 0.07 0.03 0.14
morality 0.44 0.37 -0.13 -0.08 0.21 -0.26 -0.05 0.26 -0.18 0.33 0.07 0.03 -0.09
nauseated 0.30 -0.43 0.06 0.11 0.27 0.05 0.00 0.07 0.16 0.06 -0.10 0.02 0.08
odors 0.15 -0.53 0.38 0.06 0.09 0.12 -0.06 0.16 0.06 0.03 0.19 0.09 -0.06
pain 0.45 -0.64 0.21 -0.06 0.07 -0.09 -0.05 -0.04 -0.01 0.10 -0.01 0.06 0.08
personality 0.54 0.29 -0.01 -0.12 0.20 0.12 0.01 0.18 -0.01 0.06 -0.09 0.00 0.09
pleasure 0.60 0.04 -0.18 0.10 -0.23 -0.17 -0.31 0.04 0.01 -0.04 0.08 -0.09 -0.02
pride 0.68 0.14 -0.31 0.06 -0.05 -0.02 0.01 -0.04 -0.01 -0.04 -0.03 0.01 -0.15
reasoning 0.23 0.28 0.36 0.05 -0.16 -0.01 -0.05 0.01 0.05 0.12 -0.06 -0.11 0.22
recognizing 0.20 0.32 0.13 0.10 0.11 0.00 -0.11 0.21 0.06 0.00 0.04 -0.14 0.05
remembering 0.06 0.58 0.17 0.13 -0.05 0.00 0.01 -0.17 0.19 0.28 -0.24 -0.03 -0.08
safe 0.58 -0.08 0.23 0.06 -0.06 -0.06 -0.19 0.16 -0.24 0.00 -0.10 0.09 -0.22
seeing -0.07 0.13 0.26 -0.03 -0.19 -0.08 0.19 -0.08 0.02 0.27 0.20 -0.08 0.02
self_aware 0.27 0.21 0.46 -0.03 -0.10 0.09 0.23 0.00 -0.31 -0.10 -0.09 -0.03 0.01
self_restraint 0.34 0.19 0.15 -0.56 0.11 -0.33 0.20 0.05 0.17 -0.16 0.15 -0.19 0.01
sounds -0.07 0.10 0.40 0.10 -0.18 0.23 0.08 0.23 0.14 -0.08 0.25 0.23 0.06
temperature -0.05 0.34 0.41 0.31 0.34 -0.26 -0.15 -0.23 0.08 -0.15 -0.09 0.08 0.04
thoughts 0.57 0.01 0.18 -0.05 -0.11 -0.16 -0.03 0.03 -0.09 0.03 -0.03 0.15 0.08
tired 0.39 -0.35 0.07 0.11 0.16 -0.16 0.24 0.06 0.12 -0.07 -0.11 0.12 0.05
h2 u2 com
angry 0.44 0.56 1.7
beliefs 0.50 0.50 2.8
calm 0.40 0.60 1.8
choices 0.54 0.46 4.6
communicating 0.40 0.60 5.9
computations 0.71 0.29 1.2
conscious 0.58 0.42 4.2
depressed 0.63 0.37 1.7
depth 0.41 0.59 4.8
desires 0.42 0.58 2.3
disrespected 0.58 0.42 1.4
embarrassed 0.63 0.37 3.7
emo_recog 0.49 0.51 3.1
fear 0.58 0.42 2.9
free_will 0.51 0.49 3.5
goal 0.42 0.58 5.4
guilt 0.53 0.47 2.4
happy 0.69 0.31 1.8
hungry 0.81 0.19 1.8
intentions 0.43 0.57 4.2
joy 0.62 0.38 1.6
love 0.50 0.50 1.9
morality 0.69 0.31 5.9
nauseated 0.42 0.58 3.6
odors 0.55 0.45 3.0
pain 0.70 0.30 2.3
personality 0.50 0.50 2.6
pleasure 0.60 0.40 2.5
pride 0.61 0.39 1.7
reasoning 0.37 0.63 4.8
recognizing 0.26 0.74 4.7
remembering 0.59 0.41 2.8
safe 0.59 0.41 2.8
seeing 0.30 0.70 6.0
self_aware 0.52 0.48 4.2
self_restraint 0.76 0.24 4.5
sounds 0.47 0.53 5.6
temperature 0.68 0.32 6.4
thoughts 0.44 0.56 1.8
tired 0.45 0.55 4.7
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 8.25 4.13 2.18 1.05 0.96 0.84 0.73 0.66 0.62 0.54 0.52 0.44 0.40
Proportion Var 0.21 0.10 0.05 0.03 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.21 0.31 0.36 0.39 0.41 0.44 0.45 0.47 0.49 0.50 0.51 0.52 0.53
Proportion Explained 0.39 0.19 0.10 0.05 0.05 0.04 0.03 0.03 0.03 0.03 0.02 0.02 0.02
Cumulative Proportion 0.39 0.58 0.68 0.73 0.78 0.82 0.85 0.88 0.91 0.94 0.96 0.98 1.00
Mean item complexity = 3.4
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.79
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 142.71 with prob < 1
The total number of observations was 200 with Likelihood Chi Square = 314.7 with prob < 0.81
Tucker Lewis Index of factoring reliability = 1.024
RMSEA index = 0.016 and the 90 % confidence intervals are 0 0.018
BIC = -1476.13
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9
Correlation of scores with factors 0.98 0.96 0.91 0.86 0.83 0.83 0.79 0.77 0.77
Multiple R square of scores with factors 0.95 0.93 0.83 0.74 0.69 0.68 0.62 0.60 0.59
Minimum correlation of possible factor scores 0.90 0.86 0.67 0.48 0.38 0.36 0.23 0.19 0.18
MR10 MR11 MR12 MR13
Correlation of scores with factors 0.75 0.73 0.71 0.67
Multiple R square of scores with factors 0.56 0.53 0.50 0.45
Minimum correlation of possible factor scores 0.12 0.06 0.00 -0.10
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = nfactors_d2_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.50 0.32 0.03 0.356 0.64 1.7
beliefs 0.55 -0.04 0.19 0.336 0.66 1.3
calm 0.48 0.24 0.12 0.299 0.70 1.6
choices 0.29 0.19 0.33 0.231 0.77 2.6
communicating 0.08 -0.17 0.28 0.111 0.89 1.8
computations 0.16 -0.71 0.35 0.650 0.35 1.6
conscious 0.16 0.22 0.51 0.331 0.67 1.6
depressed 0.65 0.28 0.02 0.504 0.50 1.4
depth 0.04 0.00 0.43 0.182 0.82 1.0
desires 0.44 0.33 0.02 0.301 0.70 1.8
disrespected 0.67 0.20 0.09 0.488 0.51 1.2
embarrassed 0.58 0.05 -0.09 0.346 0.65 1.1
emo_recog 0.42 -0.32 0.28 0.360 0.64 2.7
fear 0.38 0.54 0.07 0.441 0.56 1.8
free_will 0.32 0.28 0.39 0.331 0.67 2.8
goal 0.38 -0.15 0.21 0.212 0.79 1.9
guilt 0.59 0.07 0.04 0.358 0.64 1.0
happy 0.74 0.09 0.05 0.555 0.44 1.0
hungry 0.11 0.88 -0.08 0.786 0.21 1.0
intentions 0.33 -0.16 0.39 0.293 0.71 2.3
joy 0.73 0.14 -0.04 0.555 0.44 1.1
love 0.63 0.11 0.00 0.403 0.60 1.1
morality 0.49 -0.19 0.18 0.306 0.69 1.6
nauseated 0.17 0.49 -0.08 0.270 0.73 1.3
odors -0.11 0.63 0.11 0.425 0.57 1.1
pain 0.21 0.79 0.00 0.662 0.34 1.1
personality 0.54 -0.06 0.27 0.372 0.63 1.5
pleasure 0.60 0.11 0.02 0.375 0.63 1.1
pride 0.77 -0.01 -0.03 0.594 0.41 1.0
reasoning 0.13 -0.02 0.50 0.265 0.73 1.1
recognizing 0.19 -0.15 0.31 0.154 0.85 2.2
remembering 0.10 -0.40 0.41 0.333 0.67 2.1
safe 0.41 0.34 0.30 0.380 0.62 2.8
seeing -0.13 -0.04 0.25 0.083 0.92 1.6
self_aware 0.11 0.07 0.53 0.303 0.70 1.1
self_restraint 0.28 0.01 0.26 0.144 0.86 2.0
sounds -0.18 0.03 0.33 0.144 0.86 1.5
temperature -0.11 -0.15 0.42 0.212 0.79 1.4
thoughts 0.45 0.25 0.31 0.364 0.64 2.4
tired 0.26 0.45 -0.01 0.266 0.73 1.6
MR1 MR2 MR3
SS loadings 7.06 4.23 2.79
Proportion Var 0.18 0.11 0.07
Cumulative Var 0.18 0.28 0.35
Proportion Explained 0.50 0.30 0.20
Cumulative Proportion 0.50 0.80 1.00
Mean item complexity = 1.6
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 663 and the objective function was 4.79
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 198 with the empirical chi square 788.89 with prob < 0.00052
The total number of observations was 200 with Likelihood Chi Square = 874.92 with prob < 5.4e-08
Tucker Lewis Index of factoring reliability = 0.894
RMSEA index = 0.047 and the 90 % confidence intervals are 0.032 0.047
BIC = -2637.86
Fit based upon off diagonal values = 0.95
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.96 0.96 0.88
Multiple R square of scores with factors 0.91 0.91 0.78
Minimum correlation of possible factor scores 0.82 0.83 0.56
back to TOC
Study 3
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions, 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: January - June 2017
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
angry 0.80 -0.10 -0.04 -0.13 -0.05 -0.12 -0.41 -0.12 0.26 -0.21 0.07 -0.11 -0.06
choices 0.54 0.43 0.21 -0.17 -0.20 0.03 -0.01 0.02 -0.08 0.01 -0.17 -0.02 -0.05
conscious 0.50 0.45 0.11 0.24 0.47 -0.46 -0.13 -0.07 -0.08 0.09 -0.03 0.01 0.03
depressed 0.69 -0.24 0.22 0.09 -0.19 -0.18 0.00 0.03 0.13 -0.05 -0.06 -0.01 0.04
depth 0.35 0.57 0.01 0.62 -0.04 0.32 0.00 0.01 0.22 0.02 -0.03 -0.01 0.02
disrespected 0.60 -0.24 0.31 0.11 -0.06 -0.17 0.16 0.20 0.12 -0.03 0.09 0.02 0.08
embarrassed 0.53 -0.18 0.42 0.15 0.02 0.20 -0.05 0.11 -0.05 -0.02 0.16 0.11 -0.06
fear 0.81 -0.14 -0.28 -0.02 0.07 0.14 0.01 -0.01 -0.05 -0.07 0.06 -0.13 -0.03
guilt 0.54 -0.36 0.50 -0.20 0.37 0.29 -0.06 0.05 0.10 0.08 -0.20 -0.03 0.01
happy 0.67 -0.19 0.03 -0.03 -0.25 -0.10 0.06 -0.19 0.02 0.17 -0.12 0.03 -0.05
hungry 0.75 0.00 -0.56 -0.07 0.11 0.06 -0.04 0.05 0.05 0.10 0.02 0.22 -0.18
love 0.64 -0.25 0.07 0.03 0.14 0.02 0.30 0.05 -0.20 -0.04 0.08 -0.13 -0.01
nauseated 0.50 0.06 -0.17 -0.08 -0.12 -0.17 0.02 0.46 0.05 -0.01 -0.07 0.09 0.07
odors 0.64 0.03 -0.47 -0.20 0.10 0.10 0.06 -0.03 0.16 0.21 0.08 -0.07 0.20
pain 0.76 -0.16 -0.36 0.18 -0.04 0.10 -0.11 -0.08 -0.30 -0.22 -0.13 0.06 0.15
pride 0.70 -0.27 0.27 0.04 -0.16 -0.03 0.01 -0.31 -0.08 0.13 0.09 0.13 0.06
reasoning 0.41 0.69 0.12 -0.28 0.05 0.01 0.39 -0.19 0.14 -0.20 0.01 0.08 0.02
remembering 0.32 0.52 0.29 -0.28 0.03 0.13 -0.25 0.09 -0.18 -0.02 0.11 0.08 0.05
temperature 0.39 0.49 0.07 -0.04 -0.26 0.00 -0.10 0.07 -0.14 0.18 0.05 -0.17 0.00
tired 0.76 0.06 -0.10 0.06 0.03 -0.05 0.17 0.05 -0.09 -0.01 -0.01 -0.10 -0.18
h2 u2 com
angry 1.00 0.0032 2.3
choices 0.63 0.3732 3.2
conscious 1.00 0.0049 4.9
depressed 0.68 0.3184 2.0
depth 1.00 0.0044 3.5
disrespected 0.66 0.3437 2.9
embarrassed 0.61 0.3919 3.3
fear 0.82 0.1845 1.5
guilt 0.99 0.0051 5.2
happy 0.65 0.3508 2.0
hungry 1.00 0.0042 2.4
love 0.65 0.3483 2.4
nauseated 0.56 0.4372 2.9
odors 0.82 0.1805 3.0
pain 0.98 0.0206 2.6
pride 0.82 0.1822 2.5
reasoning 1.00 0.0048 3.4
remembering 0.68 0.3218 4.5
temperature 0.56 0.4351 3.6
tired 0.68 0.3177 1.4
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 7.52 2.22 1.59 0.82 0.66 0.62 0.58 0.48 0.43 0.29 0.19 0.19 0.16
Proportion Var 0.38 0.11 0.08 0.04 0.03 0.03 0.03 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.38 0.49 0.57 0.61 0.64 0.67 0.70 0.73 0.75 0.76 0.77 0.78 0.79
Proportion Explained 0.48 0.14 0.10 0.05 0.04 0.04 0.04 0.03 0.03 0.02 0.01 0.01 0.01
Cumulative Proportion 0.48 0.62 0.72 0.77 0.81 0.85 0.89 0.92 0.95 0.97 0.98 0.99 1.00
Mean item complexity = 3
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 8 and the objective function was 0.05
The root mean square of the residuals (RMSR) is 0
The df corrected root mean square of the residuals is 0.02
The harmonic number of observations is 128 with the empirical chi square 0.82 with prob < 1
The total number of observations was 128 with Likelihood Chi Square = 5.27 with prob < 0.73
Tucker Lewis Index of factoring reliability = 1.059
RMSEA index = 0 and the 90 % confidence intervals are 0 0.077
BIC = -33.55
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9
Correlation of scores with factors 0.99 0.97 0.97 0.97 0.94 0.96 0.94 0.81 0.91
Multiple R square of scores with factors 0.98 0.95 0.95 0.94 0.87 0.92 0.88 0.66 0.84
Minimum correlation of possible factor scores 0.96 0.90 0.89 0.89 0.75 0.84 0.75 0.31 0.67
MR10 MR11 MR12 MR13
Correlation of scores with factors 0.88 0.73 0.77 0.76
Multiple R square of scores with factors 0.78 0.53 0.60 0.58
Minimum correlation of possible factor scores 0.55 0.05 0.19 0.16
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
angry 0.80 -0.10 -0.04 -0.13 -0.05 -0.12 -0.41 -0.12 0.26 -0.21 0.07 -0.11 -0.06
choices 0.54 0.43 0.21 -0.17 -0.20 0.03 -0.01 0.02 -0.08 0.01 -0.17 -0.02 -0.05
conscious 0.50 0.45 0.11 0.24 0.47 -0.46 -0.13 -0.07 -0.08 0.09 -0.03 0.01 0.03
depressed 0.69 -0.24 0.22 0.09 -0.19 -0.18 0.00 0.03 0.13 -0.05 -0.06 -0.01 0.04
depth 0.35 0.57 0.01 0.62 -0.04 0.32 0.00 0.01 0.22 0.02 -0.03 -0.01 0.02
disrespected 0.60 -0.24 0.31 0.11 -0.06 -0.17 0.16 0.20 0.12 -0.03 0.09 0.02 0.08
embarrassed 0.53 -0.18 0.42 0.15 0.02 0.20 -0.05 0.11 -0.05 -0.02 0.16 0.11 -0.06
fear 0.81 -0.14 -0.28 -0.02 0.07 0.14 0.01 -0.01 -0.05 -0.07 0.06 -0.13 -0.03
guilt 0.54 -0.36 0.50 -0.20 0.37 0.29 -0.06 0.05 0.10 0.08 -0.20 -0.03 0.01
happy 0.67 -0.19 0.03 -0.03 -0.25 -0.10 0.06 -0.19 0.02 0.17 -0.12 0.03 -0.05
hungry 0.75 0.00 -0.56 -0.07 0.11 0.06 -0.04 0.05 0.05 0.10 0.02 0.22 -0.18
love 0.64 -0.25 0.07 0.03 0.14 0.02 0.30 0.05 -0.20 -0.04 0.08 -0.13 -0.01
nauseated 0.50 0.06 -0.17 -0.08 -0.12 -0.17 0.02 0.46 0.05 -0.01 -0.07 0.09 0.07
odors 0.64 0.03 -0.47 -0.20 0.10 0.10 0.06 -0.03 0.16 0.21 0.08 -0.07 0.20
pain 0.76 -0.16 -0.36 0.18 -0.04 0.10 -0.11 -0.08 -0.30 -0.22 -0.13 0.06 0.15
pride 0.70 -0.27 0.27 0.04 -0.16 -0.03 0.01 -0.31 -0.08 0.13 0.09 0.13 0.06
reasoning 0.41 0.69 0.12 -0.28 0.05 0.01 0.39 -0.19 0.14 -0.20 0.01 0.08 0.02
remembering 0.32 0.52 0.29 -0.28 0.03 0.13 -0.25 0.09 -0.18 -0.02 0.11 0.08 0.05
temperature 0.39 0.49 0.07 -0.04 -0.26 0.00 -0.10 0.07 -0.14 0.18 0.05 -0.17 0.00
tired 0.76 0.06 -0.10 0.06 0.03 -0.05 0.17 0.05 -0.09 -0.01 -0.01 -0.10 -0.18
h2 u2 com
angry 1.00 0.0032 2.3
choices 0.63 0.3732 3.2
conscious 1.00 0.0049 4.9
depressed 0.68 0.3184 2.0
depth 1.00 0.0044 3.5
disrespected 0.66 0.3437 2.9
embarrassed 0.61 0.3919 3.3
fear 0.82 0.1845 1.5
guilt 0.99 0.0051 5.2
happy 0.65 0.3508 2.0
hungry 1.00 0.0042 2.4
love 0.65 0.3483 2.4
nauseated 0.56 0.4372 2.9
odors 0.82 0.1805 3.0
pain 0.98 0.0206 2.6
pride 0.82 0.1822 2.5
reasoning 1.00 0.0048 3.4
remembering 0.68 0.3218 4.5
temperature 0.56 0.4351 3.6
tired 0.68 0.3177 1.4
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR10 MR11 MR12 MR13
SS loadings 7.52 2.22 1.59 0.82 0.66 0.62 0.58 0.48 0.43 0.29 0.19 0.19 0.16
Proportion Var 0.38 0.11 0.08 0.04 0.03 0.03 0.03 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.38 0.49 0.57 0.61 0.64 0.67 0.70 0.73 0.75 0.76 0.77 0.78 0.79
Proportion Explained 0.48 0.14 0.10 0.05 0.04 0.04 0.04 0.03 0.03 0.02 0.01 0.01 0.01
Cumulative Proportion 0.48 0.62 0.72 0.77 0.81 0.85 0.89 0.92 0.95 0.97 0.98 0.99 1.00
Mean item complexity = 3
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 8 and the objective function was 0.05
The root mean square of the residuals (RMSR) is 0
The df corrected root mean square of the residuals is 0.02
The harmonic number of observations is 128 with the empirical chi square 0.82 with prob < 1
The total number of observations was 128 with Likelihood Chi Square = 5.27 with prob < 0.73
Tucker Lewis Index of factoring reliability = 1.059
RMSEA index = 0 and the 90 % confidence intervals are 0 0.077
BIC = -33.55
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9
Correlation of scores with factors 0.99 0.97 0.97 0.97 0.94 0.96 0.94 0.81 0.91
Multiple R square of scores with factors 0.98 0.95 0.95 0.94 0.87 0.92 0.88 0.66 0.84
Minimum correlation of possible factor scores 0.96 0.90 0.89 0.89 0.75 0.84 0.75 0.31 0.67
MR10 MR11 MR12 MR13
Correlation of scores with factors 0.88 0.73 0.77 0.76
Multiple R square of scores with factors 0.78 0.53 0.60 0.58
Minimum correlation of possible factor scores 0.55 0.05 0.19 0.16
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = nfactors_d3_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR3 MR2 h2 u2 com
angry 0.54 0.50 0.24 0.59 0.41 2.4
choices 0.15 0.26 0.69 0.57 0.43 1.4
conscious 0.22 0.17 0.51 0.34 0.66 1.6
depressed 0.29 0.70 0.12 0.60 0.40 1.4
depth 0.16 0.02 0.51 0.28 0.72 1.2
disrespected 0.18 0.69 0.10 0.52 0.48 1.2
embarrassed 0.06 0.67 0.16 0.48 0.52 1.1
fear 0.78 0.40 0.13 0.78 0.22 1.6
guilt 0.10 0.68 0.04 0.47 0.53 1.0
happy 0.42 0.54 0.13 0.48 0.52 2.0
hungry 0.91 0.12 0.17 0.87 0.13 1.1
love 0.39 0.55 0.05 0.46 0.54 1.8
nauseated 0.42 0.19 0.23 0.26 0.74 2.0
odors 0.74 0.11 0.18 0.59 0.41 1.2
pain 0.72 0.35 0.10 0.65 0.35 1.5
pride 0.28 0.73 0.12 0.63 0.37 1.3
reasoning 0.14 0.02 0.71 0.52 0.48 1.1
remembering -0.03 0.11 0.65 0.44 0.56 1.1
temperature 0.15 0.06 0.63 0.42 0.58 1.1
tired 0.57 0.39 0.34 0.60 0.40 2.5
MR1 MR3 MR2
SS loadings 3.97 3.87 2.72
Proportion Var 0.20 0.19 0.14
Cumulative Var 0.20 0.39 0.53
Proportion Explained 0.38 0.37 0.26
Cumulative Proportion 0.38 0.74 1.00
Mean item complexity = 1.5
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 133 and the objective function was 1.77
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 128 with the empirical chi square 98.63 with prob < 0.99
The total number of observations was 128 with Likelihood Chi Square = 208.44 with prob < 3.2e-05
Tucker Lewis Index of factoring reliability = 0.909
RMSEA index = 0.074 and the 90 % confidence intervals are 0.049 0.084
BIC = -436.88
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR3 MR2
Correlation of scores with factors 0.96 0.92 0.90
Multiple R square of scores with factors 0.91 0.85 0.80
Minimum correlation of possible factor scores 0.83 0.70 0.61
back to TOC
Subscales
Reliability (and intercorrelations - see alpha)
Call: scoreItems(keys = keys.list, items = d3_all, min = 0, max = 1)
(Unstandardized) Alpha:
SOUL BODY MIND
alpha 0.87 0.9 0.8
Standard errors of unstandardized Alpha:
SOUL BODY MIND
ASE 0.036 0.032 0.049
Average item correlation:
SOUL BODY MIND
average.r 0.49 0.57 0.4
Guttman 6* reliability:
SOUL BODY MIND
Lambda.6 0.89 0.92 0.82
Signal/Noise based upon av.r :
SOUL BODY MIND
Signal/Noise 6.8 9.1 4.1
Scale intercorrelations corrected for attenuation
raw correlations below the diagonal, alpha on the diagonal
corrected correlations above the diagonal:
SOUL BODY MIND
SOUL 0.87 0.72 0.37
BODY 0.63 0.90 0.51
MIND 0.31 0.43 0.80
In order to see the item by scale loadings and frequency counts of the data
print with the short option = FALSEOmega
Call: omega(m = d3_all, plot = F)
Alpha: 0.91
G.6: 0.94
Omega Hierarchical: 0.63
Omega H asymptotic: 0.67
Omega Total 0.94
Schmid Leiman Factor loadings greater than 0.2
g F1* F2* F3* h2 u2 p2
angry 0.64 0.28 0.30 0.59 0.41 0.69
choices 0.43 0.61 0.57 0.43 0.32
conscious 0.38 0.43 0.34 0.66 0.42
depressed 0.55 0.54 0.60 0.40 0.51
depth 0.26 0.45 0.28 0.72 0.24
disrespected 0.47 0.54 0.52 0.48 0.43
embarrassed 0.40 0.55 0.48 0.52 0.33
fear 0.71 0.49 0.78 0.22 0.65
guilt 0.39 0.56 0.47 0.53 0.33
happy 0.55 0.20 0.37 0.48 0.52 0.64
hungry 0.68 0.64 0.87 0.13 0.52
love 0.52 0.39 0.46 0.54 0.59
nauseated 0.42 0.25 0.26 0.74 0.67
odors 0.57 0.52 0.59 0.41 0.54
pain 0.64 0.46 0.65 0.35 0.64
pride 0.56 0.56 0.63 0.37 0.49
reasoning 0.31 0.64 0.52 0.48 0.18
remembering 0.23 0.61 0.44 0.56 0.12
temperature 0.31 0.57 0.42 0.58 0.23
tired 0.64 0.32 0.21 0.60 0.40 0.69
With eigenvalues of:
g F1* F2* F3*
5.1 1.5 2.0 2.0
general/max 2.49 max/min = 1.36
mean percent general = 0.46 with sd = 0.18 and cv of 0.4
Explained Common Variance of the general factor = 0.48
The degrees of freedom are 133 and the fit is 1.77
The number of observations was 128 with Chi Square = 208.44 with prob < 3.2e-05
The root mean square of the residuals is 0.05
The df corrected root mean square of the residuals is 0.05
RMSEA index = 0.074 and the 10 % confidence intervals are 0.049 0.084
BIC = -436.88
Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 170 and the fit is 5.11
The number of observations was 128 with Chi Square = 607.41 with prob < 1.8e-50
The root mean square of the residuals is 0.16
The df corrected root mean square of the residuals is 0.17
RMSEA index = 0.149 and the 10 % confidence intervals are 0.13 0.155
BIC = -217.44
Measures of factor score adequacy
g F1* F2* F3*
Correlation of scores with factors 0.82 0.73 0.80 0.85
Multiple R square of scores with factors 0.67 0.53 0.65 0.72
Minimum correlation of factor score estimates 0.34 0.05 0.29 0.45
Total, General and Subset omega for each subset
g F1* F2* F3*
Omega total for total scores and subscales 0.94 0.89 0.88 0.81
Omega general for total scores and subscales 0.63 0.58 0.47 0.20
Omega group for total scores and subscales 0.22 0.31 0.41 0.61
Study 4
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions (doll, teddy bear), 3-point response scale, “decide what to do” and “have intentions”
- Population: 4-6yo children
- Date conducted: March 2017 - present
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
Column `character` joining factor and character vector, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 6, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 h2 u2 com
angry 0.65 -0.09 -0.30 -0.33 -0.01 0.09 0.64 0.36 2.0
choices 0.51 0.13 0.23 -0.01 -0.09 0.07 0.35 0.65 1.7
conscious 0.53 0.26 0.14 -0.31 0.00 -0.03 0.47 0.53 2.3
depressed 0.61 -0.15 0.00 -0.20 -0.11 0.13 0.46 0.54 1.5
depth 0.45 0.40 0.07 -0.11 0.10 0.31 0.49 0.51 3.1
disrespected 0.65 -0.11 -0.15 -0.31 0.12 -0.20 0.61 0.39 1.9
embarrassed 0.56 -0.09 -0.06 0.17 0.40 -0.19 0.55 0.45 2.4
fear 0.60 -0.14 -0.01 0.26 -0.06 0.07 0.45 0.55 1.5
guilt 0.51 0.32 0.02 0.11 -0.05 -0.17 0.41 0.59 2.1
happy 0.65 -0.29 0.39 -0.01 0.14 0.04 0.69 0.31 2.2
hungry 0.74 -0.13 -0.25 0.22 -0.03 0.06 0.68 0.32 1.5
love 0.57 -0.33 0.35 0.06 -0.07 0.04 0.56 0.44 2.4
nauseated 0.65 -0.18 -0.14 0.06 0.18 -0.07 0.51 0.49 1.5
odors 0.61 -0.06 -0.26 0.20 -0.24 0.02 0.54 0.46 2.0
pain 0.49 -0.02 -0.13 -0.10 0.11 -0.03 0.28 0.72 1.3
pride 0.66 -0.20 0.27 -0.05 -0.26 -0.17 0.65 0.35 2.1
reasoning 0.54 0.39 -0.08 0.03 -0.25 -0.26 0.58 0.42 2.9
remembering 0.41 0.25 0.04 0.23 0.06 0.09 0.29 0.71 2.4
temperature 0.51 0.47 0.18 0.07 0.17 -0.03 0.55 0.45 2.5
tired 0.72 0.03 -0.16 0.06 -0.02 0.24 0.61 0.39 1.4
MR1 MR2 MR3 MR4 MR5 MR6
SS loadings 6.90 1.15 0.78 0.63 0.50 0.41
Proportion Var 0.34 0.06 0.04 0.03 0.02 0.02
Cumulative Var 0.34 0.40 0.44 0.47 0.50 0.52
Proportion Explained 0.67 0.11 0.08 0.06 0.05 0.04
Cumulative Proportion 0.67 0.78 0.85 0.91 0.96 1.00
Mean item complexity = 2
Test of the hypothesis that 6 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.6 with Chi Square of 1045.24
The degrees of freedom for the model are 85 and the objective function was 0.89
The root mean square of the residuals (RMSR) is 0.03
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 128 with the empirical chi square 52.08 with prob < 1
The total number of observations was 130 with Likelihood Chi Square = 104.81 with prob < 0.071
Tucker Lewis Index of factoring reliability = 0.946
RMSEA index = 0.052 and the 90 % confidence intervals are 0 0.067
BIC = -308.93
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6
Correlation of scores with factors 0.97 0.84 0.81 0.77 0.73 0.69
Multiple R square of scores with factors 0.94 0.71 0.66 0.59 0.53 0.48
Minimum correlation of possible factor scores 0.88 0.42 0.33 0.17 0.07 -0.04
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = nfactors_d4_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.64 0.22 0.17 0.48 0.52 1.4
choices 0.16 0.44 0.36 0.35 0.65 2.2
conscious 0.22 0.50 0.23 0.35 0.65 1.8
depressed 0.46 0.19 0.37 0.39 0.61 2.3
depth 0.17 0.54 0.08 0.33 0.67 1.2
disrespected 0.55 0.24 0.27 0.43 0.57 1.8
embarrassed 0.43 0.22 0.26 0.30 0.70 2.2
fear 0.47 0.20 0.34 0.37 0.63 2.2
guilt 0.25 0.54 0.10 0.37 0.63 1.5
happy 0.29 0.19 0.74 0.66 0.34 1.4
hungry 0.72 0.24 0.23 0.63 0.37 1.4
love 0.26 0.09 0.71 0.58 0.42 1.3
nauseated 0.59 0.17 0.30 0.47 0.53 1.6
odors 0.60 0.22 0.14 0.43 0.57 1.4
pain 0.45 0.22 0.14 0.27 0.73 1.7
pride 0.36 0.23 0.57 0.50 0.50 2.1
reasoning 0.32 0.55 0.03 0.40 0.60 1.6
remembering 0.20 0.42 0.10 0.23 0.77 1.6
temperature 0.10 0.71 0.14 0.53 0.47 1.1
tired 0.60 0.37 0.21 0.55 0.45 1.9
MR1 MR2 MR3
SS loadings 3.71 2.65 2.24
Proportion Var 0.19 0.13 0.11
Cumulative Var 0.19 0.32 0.43
Proportion Explained 0.43 0.31 0.26
Cumulative Proportion 0.43 0.74 1.00
Mean item complexity = 1.7
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 8.6 with Chi Square of 1045.24
The degrees of freedom for the model are 133 and the objective function was 1.63
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.06
The harmonic number of observations is 128 with the empirical chi square 129.97 with prob < 0.56
The total number of observations was 130 with Likelihood Chi Square = 194.94 with prob < 0.00038
Tucker Lewis Index of factoring reliability = 0.894
RMSEA index = 0.067 and the 90 % confidence intervals are 0.041 0.078
BIC = -452.45
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.87 0.85 0.85
Multiple R square of scores with factors 0.76 0.72 0.73
Minimum correlation of possible factor scores 0.53 0.45 0.45
back to TOC
Big factor loadings table for all studies (Studies 1-4)
Error in fa.sort(efa_d2_all_rotatedN) :
object 'efa_d2_all_rotatedN' not found
Mean factor scores
Studies 1-2
Joining, by = c("study", "subid", "character", "age", "gender", "ethnicity", "trialNum", "bgColor", "capacity", "capWording", "hoverTime", "rt", "response", "responseNum", "age_group", "responseNumC")
Column `study` joining factors with different levels, coercing to character vectorColumn `character` joining factors with different levels, coercing to character vectorColumn `gender` joining factors with different levels, coercing to character vectorColumn `ethnicity` joining factors with different levels, coercing to character vectorColumn `capWording` joining factors with different levels, coercing to character vectorColumn `response` joining factors with different levels, coercing to character vectorJoining, by = "subid"
Loading required package: Matrix
Attaching package: ‘Matrix’
The following object is masked from ‘package:tidyr’:
expand
Linear mixed model fit by REML ['lmerMod']
Formula: score ~ character * factor * age_group + (1 | subid)
Data: tempC
REML criterion at convergence: 86761.5
Scaled residuals:
Min 1Q Median 3Q Max
-4.3061 -0.6245 0.0334 0.6193 3.0480
Random effects:
Groups Name Variance Std.Dev.
subid (Intercept) 0.2320 0.4816
Residual 0.3495 0.5912
Number of obs: 47532, groups: subid, 400
Fixed effects:
Estimate Std. Error t value
(Intercept) -0.001269 0.024249 -0.05
characterrobot -0.248788 0.024249 -10.26
factorfactor1 0.007584 0.003837 1.98
factorfactor3 0.003174 0.003837 0.83
age_groupchildren 0.183383 0.024249 7.56
characterrobot:factorfactor1 0.276372 0.003837 72.02
characterrobot:factorfactor3 0.373325 0.003837 97.29
characterrobot:age_groupchildren 0.043278 0.024249 1.78
factorfactor1:age_groupchildren 0.457873 0.003837 119.32
factorfactor3:age_groupchildren -0.304688 0.003837 -79.40
characterrobot:factorfactor1:age_groupchildren -0.017203 0.003837 -4.48
characterrobot:factorfactor3:age_groupchildren -0.027872 0.003837 -7.26
Correlation of Fixed Effects:
(Intr) chrctr fctrf1 fctrf3 ag_grp chrc:1 chrc:3 chrc:_ fct1:_ fct3:_ ch:1:_
charactrrbt 0.010
factorfctr1 0.000 0.000
factorfctr3 0.000 0.000 -0.500
ag_grpchldr 0.001 0.030 0.000 0.000
chrctrrbt:1 0.000 0.000 0.013 -0.006 0.000
chrctrrbt:3 0.000 0.000 -0.006 0.013 0.000 -0.500
chrctrrbt:_ 0.030 0.001 0.000 0.000 0.010 0.000 0.000
fctrfctr1:_ 0.000 0.000 -0.002 0.001 0.000 0.033 -0.016 0.000
fctrfctr3:_ 0.000 0.000 0.001 -0.002 0.000 -0.016 0.033 0.000 -0.500
chrctrr:1:_ 0.000 0.000 0.033 -0.016 0.000 -0.002 0.001 0.000 0.013 -0.006
chrctrr:3:_ 0.000 0.000 -0.016 0.033 0.000 0.001 -0.002 0.000 -0.006 0.013 -0.500

Study 3

Studies 3-4

Factor scores by age
Study 1
Joining, by = "subid"

Study 2
Joining, by = "subid"

Studies 1-2
Joining, by = "subid"
Ignoring unknown aesthetics: y

Studies 3-4
Joining, by = c("age_group", "subid", "age", "character")
Column `character` joining factors with different levels, coercing to character vectorJoining, by = "subid"


LS0tCnRpdGxlOiAiRGlta2lkIENvZ1NjaSAyMDE3IChXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCBDb2dTY2kgMjAxNykiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGZsYXRseQogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCiMgU2V0dXAKCmBgYHtyIHdvcmtzcGFjZSBzZXR1cH0KIyBsb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwc3ljaCkKbGlicmFyeShsYW5nY29nKSAjIHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2xhbmdjb2cvbGFuZ2NvZwpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShwbG90bHkpCmxpYnJhcnkobHVicmlkYXRlKQoKIyBjbGVhciB3b3Jrc3BhY2UKcm0obGlzdCA9IGxzKGFsbCA9IFQpKQpncmFwaGljcy5vZmYoKQpgYGAKCmBgYHtyIGZ1bmN0aW9uc30KIyBtYWtlIG5hLnJtID0gVCB2ZXJzaW9ucyBvZiBzdW1tYXJ5IGZ1bmN0aW9ucwptZWFuX25hIDwtIGZ1bmN0aW9uKHgpIHttZWFuKHgsIG5hLnJtID0gVCl9CmNpX2xvd2VyX25hIDwtIGZ1bmN0aW9uKHgpIHtxdWFudGlsZSh4LCAwLjAyNSwgbmEucm0gPSBUKX0KY2lfdXBwZXJfbmEgPC0gZnVuY3Rpb24oeCkge3F1YW50aWxlKHgsIDAuOTc1LCBuYS5ybSA9IFQpfQoKIyBtYWtlIHJvdW5kaW5nIGZ1bmN0aW9uCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBuc21hbGwgPSAyKX0KCiMgbWFrZSBjbGVhbnVwIGZ1bmN0aW9uCmNsZWFudXAgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSwgYWdlX2dyb3VwKSB7CiAgaWYoZ3JlcGwoImFkdWx0IiwgYWdlX2dyb3VwKSkgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZF9yYXdfc3R1ZHkxfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGRfcmF3X3N0dWR5MWJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZF9yYXdfc3R1ZHkxY30KICAgIAogICAgIyBlbmFjdCBleGNsdXNpb25hcnkgY3JpdGVyaWEKICAgIGRfY2xlYW5fMSA8LSBkCiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzEgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpKSAlPiUKICAgICAgbXV0YXRlKCAjIGRlYWwgd2l0aCByYWNlCiAgICAgICAgcmFjZV9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIGV0aG5pY2l0eSkpLAogICAgICAgIHJhY2VfY2F0MyA9IGZhY3RvcihpZmVsc2UoZ3JlcGwoIiAiLCByYWNlX2NhdDIpID09IFQsICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmFjZV9jYXQyKSkpKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdHVkeSwgc3ViaWQ6Y291bnRyeV9zZWxmcmVwLCBhZ2VfZ3JvdXAsIHJhY2VfY2F0MykgJT4lCiAgICAgIHJlbmFtZShyYWNlX2NhdCA9IHJhY2VfY2F0MykgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmVsaWdpb24gKG5vdGU6IG9ubHkgZGVhbGluZyB3aXRoIGNoaWxkaG9vZCByZWxpZ2lvbiBmb3Igbm93KQogICAgICAgIHJlbGlnaW9uX2NhdDIgPSBmYWN0b3Ioc3ViKCIgKyQiLCAiIiwgcmVsaWdpb25DaGlsZCkpLAogICAgICAgIHJlbGlnaW9uX2NhdDMgPSBmYWN0b3IoaWZlbHNlKGdyZXBsKCIgIiwgcmVsaWdpb25fY2F0MikgPT0gVCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcmVsaWdpb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmVsaWdpb25fY2F0MikpKSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHk6cmFjZV9jYXQsIHJlbGlnaW9uX2NhdDMpICU+JQogICAgICByZW5hbWUocmVsaWdpb25fY2F0ID0gcmVsaWdpb25fY2F0MykKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8xKQogIH0KICAKICBpZihncmVwbCgiY2hpbGQiLCBhZ2VfZ3JvdXApKSB7CiAgICAKICAgICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkX3Jhd19zdHVkeTJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkX3Jhd19zdHVkeTN9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkX3Jhd19zdHVkeTR9CiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbl8yIDwtIGQgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpLAogICAgICAgIHJlc3BvbnNlTnVtID0gaWZlbHNlKCFpcy5uYShyZXNwb25zZU51bSksIHJlc3BvbnNlTnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZXNwb25zZSA9PSAibm8iLCAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlc3BvbnNlID09ICJraW5kYSIsIDAuNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVzcG9uc2UgPT0gInllcyIsIDEsIE5BKSkpKSkKICAgICMgTk9URTogbmVlZCB0byByZWNvbmNpbGUgcmFjZS9ldGhuaWNpdHkgYXQgc29tZSBwb2ludC4uLgogICAgIyBOT1RFOiBuZWVkIHRvIGRlYWwgd2l0aCBnZW5kZXIgYXQgc29tZSBwb2ludC4uLgogIAogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzIKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8yKQogIH0KICAKICAjIHJlbW92ZSBvdXRsaWVycyBpZiBkZXNpcmVkCiAgaWYoY2hvc2VuT3V0bGllckhhbmRsaW5nID09ICJyZW1vdmUiKSB7CiAgICAKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgZ2F0aGVyKGNhcGFjaXR5LCBzY29yZSwgaGFwcHk6cHJpZGUpICU+JQogICAgICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICAgICAgZmlsdGVyKCFzY29yZSAlaW4lIGJveHBsb3Quc3RhdHMoc2NvcmUsIDIuNSkkb3V0KSAlPiUKICAgICAgc3ByZWFkKGNhcGFjaXR5LCBzY29yZSkgJT4lCiAgICAgIGFycmFuZ2UoY2hhcmFjdGVyLCBzdWJpZCkKICAgIAogIH0KICAKICAjIGZpbHRlciBjaGFyYWN0ZXJzIGlmIGRlc2lyZWQKICBpZihpcy5lbGVtZW50KCJub25lIiwgY2hvc2VuRXhjbHVkZSkpIHt9IGVsc2UgewogICAgCiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIGZpbHRlcighY2hhcmFjdGVyICVpbiUgY2hvc2VuRXhjbHVkZSkKICAgIAogICAgfQogICAgCiAgIyBmaWx0ZXIgaXRlbXMgaWYgZGVzaXJlZAogIGlmKGlzLmVsZW1lbnQoIm5vbmUiLCBjaG9zZW5FeGNsdWRlSXRlbSkpIHt9IGVsc2UgewogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBkcGx5cjo6ZmlsdGVyKCFjYXBhY2l0eSAlaW4lIGNob3NlbkV4Y2x1ZGVJdGVtKQogIH0KICAKICAjIGRyb3AgdHJpYWxzIDwyNTAgbXMKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIocnQgPj0gMjUwIHwgaXMubmEocnQpKQogIAogICMgY2VudGVyIHJlc3BvbnNlIHZhcmlhYmxlCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKSB7CiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIG11dGF0ZShyZXNwb25zZU51bUMgPSByZXNwb25zZU51bSAtIDQpCiAgfSBlbHNlIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgbXV0YXRlKHJlc3BvbnNlTnVtQyA9IHJlc3BvbnNlTnVtIC0gMC41KQogIH0KCiAgICAjIHJlbmFtZSBjaGFyYWN0ZXIgbmFtZSB2YXJpYWJsZXMKICBpZigiY2hhck5hbWUiICVpbiUgbmFtZXMoZF9jbGVhbikpIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUgcmVuYW1lKGNoYXJhY3RlciA9IGNoYXJOYW1lKQogIH0KICAKICAjIGNsZWFudXAKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIoIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNoYXJhY3RlciksICFpcy5uYShjYXBhY2l0eSkpCiAgCiAgIyByZXR1cm4gY2xlYW5lZCBkYXRhc2V0CiAgcmV0dXJuKGRfY2xlYW4pCn0KCiMgbWFrZSBmdW5jdGlvbiBmb3Igc3RyaXBwaW5nIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9uCm1ha2VEUkRGIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UsIGNob3NlbkNvbmRpdGlvbikgewogIAogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGZpbHRlciBieSBjaGFyYWN0ZXIgaWYgc3BlY2lmaWVkCiAgaWYoY2hvc2VuQ29uZGl0aW9uICVpbiUgYygiYmVldGxlIiwgInJvYm90IikpIHsKICAgIGQgPC0gZCAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBjaG9zZW5Db25kaXRpb24pCiAgfQoKICAjIG1ha2Ugc3RyaXBwZWQgZGF0YWZyYW1lIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbiBhbmFseXNlcwogIGRfc3RyaXAgPC0gZCAlPiUKICAgIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNhcGFjaXR5KSwgY2FwYWNpdHkgIT0gIiIpICU+JQogICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgICBzZWxlY3Qoc3ViaWQsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICBzcHJlYWQoY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICAgIHJlbW92ZV9yb3duYW1lcygpICU+JQogICAgY29sdW1uX3RvX3Jvd25hbWVzKHZhciA9ICJzdWJpZCIpCgogICMgcmV0dXJuIHN0cmlwcGVkIGRhdGFmcmFtZQogIHJldHVybihkX3N0cmlwKQp9CgojIG1ha2UgZGVtb2dyYXBoaWNzIGZ1bmN0aW9ucwpkZW1vU2FtcGxlU2l6ZSA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBkaXN0aW5jdCBzdWJpZHMKICBzYW1wbGVfc2l6ZSA8LSBkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyKSAlPiUgY291bnQoY2hhcmFjdGVyKSAlPiUgZGF0YS5mcmFtZSgpCgogICMgYWRkIHRvdGFsIHNhbXBsZSBzaXplICAKICBzYW1wbGVfc2l6ZSA8LSByYmluZChzYW1wbGVfc2l6ZSAlPiUgbXV0YXRlKGNoYXJhY3RlciA9IGFzLmNoYXJhY3RlcihjaGFyYWN0ZXIpKSwKICAgICAgICAgICAgICAgICAgICAgICBjKGNoYXJhY3RlciA9ICJhbGwiLCBuID0gZCAlPiUgZGlzdGluY3Qoc3ViaWQpICU+JSBjb3VudCgpICU+JSBhcy5udW1lcmljKCkpKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihzYW1wbGVfc2l6ZSkKfQpkZW1vRHVyYXRpb24gPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGR1cmF0aW9uIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBncm91cF9ieShjaGFyYWN0ZXIpICU+JQogICAgc3VtbWFyaXNlKG1pbl9kdXJhdGlvbiA9IG1pbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfZHVyYXRpb24gPSBtYXgoZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2R1cmF0aW9uID0gbWVkaWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lYW5fZHVyYXRpb24gPSBtZWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2R1cmF0aW9uID0gc2QoZHVyYXRpb24sIG5hLnJtID0gVCkpCgogICMgYWRkIHRvdGFsIGR1cmF0aW9uCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2R1cmF0aW9uID0gbWluKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1heF9kdXJhdGlvbiA9IG1heChkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fZHVyYXRpb24gPSBtZWRpYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9kdXJhdGlvbiA9IG1lYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2RfZHVyYXRpb24gPSBzZChkdXJhdGlvbiwgbmEucm0gPSBUKSkgJT4lCiAgICBtdXRhdGUoY2hhcmFjdGVyID0gImFsbCIpCiAgCiAgZHVyYXRpb24gPC0gcmJpbmQoZHVyYXRpb24sIGFsbCkgIyBub3Qgc3VyZSB3aHkgZnVsbF9qb2luIGRvZXNuJ3Qgd29yayAgICAKCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKGR1cmF0aW9uKQp9CmRlbW9BZ2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGFnZSA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgYWdlKSAlPiUKICAgIG11dGF0ZShhZ2UgPSBhcy5udW1lcmljKGFnZSkpICU+JQogICAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICAgIHN1bW1hcmlzZShtaW5fYWdlID0gbWluKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfYWdlID0gbWF4KGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fYWdlID0gbWVkaWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2FnZSA9IHNkKGFnZSwgbmEucm0gPSBUKSkKCiAgIyBhZGQgdG90YWwgYWdlCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBhZ2UpICU+JQogICAgbXV0YXRlKGFnZSA9IGFzLm51bWVyaWMoYWdlKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWF4X2FnZSA9IG1heChhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2FnZSA9IG1lZGlhbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9hZ2UgPSBtZWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2UsIG5hLnJtID0gVCkpICU+JQogICAgbXV0YXRlKGNoYXJhY3RlciA9ICJhbGwiKQogIGFnZSA8LSBmdWxsX2pvaW4oYWdlLCBhbGwpCgogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihhZ2UpCn0KZGVtb0dlbmRlciA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBnZW5kZXIgcGVyIGNoYXJhY3RlciBhbmQgb3ZlcmFsbAogIGdlbmRlciA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBnZW5kZXIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCBnZW5kZXIpKSkpICU+JQogICAgZmlsdGVyKGdlbmRlciAhPSAiU3VtIikgJT4lCiAgICByZW5hbWUobiA9IEZyZXEpCiAgCiAgZ2VuZGVyIDwtIGdlbmRlciAlPiUKICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoaWZlbHNlKGNoYXJhY3RlciA9PSAiU3VtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGwiLCBhcy5jaGFyYWN0ZXIoY2hhcmFjdGVyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgYXJyYW5nZShjaGFyYWN0ZXIsIGdlbmRlcikgJT4lCiAgICBzcHJlYWQoZ2VuZGVyLCBuKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihnZW5kZXIpCn0KZGVtb1JhY2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgcmFjZSBwZXIgY2hhcmFjdGVyIGFuZCBvdmVyYWxsCiAgcmFjZSA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCByYWNlX2NhdCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCByYWNlX2NhdCkpKSkgJT4lCiAgICBmaWx0ZXIocmFjZV9jYXQgIT0gIlN1bSIpICU+JQogICAgcmVuYW1lKG4gPSBGcmVxKQoKICAgIHJhY2UgPC0gcmFjZSAlPiUKICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihpZmVsc2UoY2hhcmFjdGVyID09ICJTdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNoYXJhY3RlcikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgICBhcnJhbmdlKGNoYXJhY3RlciwgcmFjZV9jYXQpICU+JQogICAgICBzcHJlYWQocmFjZV9jYXQsIG4pCiAgCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKHJhY2UpCn0KCiMgcGxvdHRpbmcgZnVuY3Rpb25zCm1ha2VGYWNldExhYnMgPC0gZnVuY3Rpb24oZGZfcGxvdHRpbmcpIHsKICBmYWNldF9sYWJlbHMgPC0gYXJyYXkoKQogIGRmX3Bsb3R0aW5nIDwtIGRmX3Bsb3R0aW5nICU+JSBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpCiAgZm9yKGkgaW4gMTpsZW5ndGgobGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikpKSB7CiAgICBkZiA8LSBkZl9wbG90dGluZyAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBsZXZlbHMoZGZfcGxvdHRpbmckY2hhcmFjdGVyKVtpXSkgJT4lCiAgICAgIHNlbGVjdChjaGFyYWN0ZXIsIG4pICU+JSB1bmlxdWUoKQogICAgZmFjZXRfbGFiZWxzW2ldIDwtIHBhc3RlMChkZiRjaGFyYWN0ZXIsICIgKG4gPSAiLCBkZiRuLCAiKSIpCiAgfQogIG5hbWVzKGZhY2V0X2xhYmVscykgPC0gbGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikKICByZXR1cm4oZmFjZXRfbGFiZWxzKQp9CmBgYAoKYGBge3IgbW9kZWxpbmcgZGVjaXNpb25zfQojIHJlbW92ZSBvdXRsaWVycz8KY2hvc2VuT3V0bGllckhhbmRsaW5nIDwtICJrZWVwIgojIGNob3Nlbk91dGxpZXJIYW5kbGluZyA8LSAicmVtb3ZlIgoKIyBleGNsdWRlIGFueSBjb25kaXRpb25zIChjaGFyYWN0ZXJzKT8KY2hvc2VuRXhjbHVkZSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlIDwtIGMoInN0YXBsZXIiLCAiY2FyIiwgImNvbXB1dGVyIikKCiMgZXhjbHVkZSBhbnkgaXRlbXMgKG1lbnRhbCBjYXBhY2l0aWVzKT8KIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAiY29tcHV0YXRpb25zIgpjaG9zZW5FeGNsdWRlSXRlbSA8LSBjKCJtZXRhbCIsICJvbl9vZmYiKQoKIyBOT1RFOiBhbHdheXMgY2hvb3NlIG1pbmltYWwgcmVzaWR1YWwgKGZtID0gIm1pbnJlcyIpIGluc3RlYWQgb2YgTUwgYmVjYXVzZSBvZiBub24tbm9ybWFsaXR5CgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2YgY29ycmVsYXRpb24/CmNob3NlbkNvclR5cGUgPC0gImNvciIgIyBwZWFyc29uIGNvcnJlbGF0aW9uCiMgY2hvc2VuQ29yVHlwZSA8LSAicG9seSIgIyBwb2x5Y2hvcmljIGNvcnJlbGF0aW9uCgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2Ygcm90YXRpb24/CmNob3NlblJvdFR5cGUgPC0gInZhcmltYXgiICMgdmFyaW1heCByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm9ibGltaW4iICMgb2JsaW1pbiByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm5vbmUiICMgbm8gcm90YXRpb24KCmRhdGEuZnJhbWUoImNvbmRpdGlvbnNFeGNsdWRlZCIgPSBjaG9zZW5FeGNsdWRlLAogICAgICAgICAgICJvdXRsaWVySGFuZGxpbmciID0gY2hvc2VuT3V0bGllckhhbmRsaW5nLAogICAgICAgICAgICJFRkFfY29ycmVsYXRpb24iID0gY2hvc2VuQ29yVHlwZSwKICAgICAgICAgICAiRUZBX3JvdGF0aW9uIiA9IGNob3NlblJvdFR5cGUpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMgRGF0YSBwcmVwYXJhdGlvbgoKYGBge3IgZGF0YSB1cGxvYWR9CiMgc3R1ZHkgMSAoMjAxNi0wNy0wNiwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkxIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDFfMjAxNi0wNi0wNV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDFiICgyMDE3LTA3LTE5LCBhZHVsdHMsIDIgY29uZGl0aW9ucywgNy1wb2ludCBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTFiIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDJfMjAxNi0wNy0xOV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYiIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAxYyAoMjAxNi0xMi0wOCwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJoYXZlIGZyZWUgd2lsbCIgYW5kICJoYXZlIGludGVudGlvbnMiKQpkX3Jhd19zdHVkeTFjIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDNfMjAxNi0xMi0wOF9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYyIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAyIChKdW5lIC0gRGVjZW1iZXIgMjAxNiwgNy05eW8sIDIgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTIgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAxXzIwMTctMDctMjRfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl83OSIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDMgKEphbnVhcnkgLSBKdW5lIDIwMTcsIDctOXlvLCA5IGNvbmRpdGlvbnMsIDMtcG9pbnQtc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkzIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2NoaWxkcmVuL3J1bi0wMl8yMDE3LTA4LTA4X2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW5fNzkiKSAlPiUgc2VsZWN0KC1YKSAlPiUKICBtdXRhdGUoZG9iID0gcGFyc2VfZGF0ZXRpbWUoZGF0ZU9mQmlydGgsICIlbS8lZC8leSIpLAogICAgICAgICBkb3QgPSBwYXJzZV9kYXRldGltZShnc3ViKCIyMDE3IiwgIjE3IiwgZGF0ZU9mVGVzdCksICIlbS8lZC8leSIpLCAKICAgICAgICAgYWdlID0gaW50ZXJ2YWwoc3RhcnQgPSBkb2IsIGVuZCA9IGRvdCkgLyBkdXJhdGlvbihudW0gPSAxLCB1bml0cyA9ICJ5ZWFycyIpKSAlPiUKICBzZWxlY3QoLWRhdGVPZkJpcnRoLCAtZGF0ZU9mVGVzdCwgLWRvYiwgLWRvdCkKCiMgc3R1ZHkgNCAoTWFyeSAyMDE3IC0gcHJlc2VudCwgNC02eW8sIDkgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTQgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAzXzIwMTctMDgtMTBfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNCIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl80NiIpICU+JSBzZWxlY3QoLVgpICU+JQogIG11dGF0ZShkb2IgPSBwYXJzZV9kYXRldGltZShkYXRlT2ZCaXJ0aCwgIiVtLyVkLyV5IiksCiAgICAgICAgIGRvdCA9IHBhcnNlX2RhdGV0aW1lKGdzdWIoIjIwMTciLCAiMTciLCBkYXRlT2ZUZXN0KSwgIiVtLyVkLyV5IiksIAogICAgICAgICBhZ2UgPSBpbnRlcnZhbChzdGFydCA9IGRvYiwgZW5kID0gZG90KSAvIGR1cmF0aW9uKG51bSA9IDEsIHVuaXRzID0gInllYXJzIikpICU+JQogIHNlbGVjdCgtZGF0ZU9mQmlydGgsIC1kYXRlT2ZUZXN0LCAtZG9iLCAtZG90KQpgYGAKCmBgYHtyIGRhdGEgY2xlYW51cH0KIyBjbGVhbiB1cCBkYXRhc2V0cwpkMSA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQxYiA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQxYyA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQyIDwtIGNsZWFudXAoInN0dWR5IDIiLCAiY2hpbGRyZW4iKQpkMyA8LSBjbGVhbnVwKCJzdHVkeSAzIiwgImNoaWxkcmVuIikKZDQgPC0gY2xlYW51cCgic3R1ZHkgNCIsICJjaGlsZHJlbiIpCgojIHR3ZWFrIGJ5IGhhbmQKZDIgPC0gZDIgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBmaWx0ZXIoYWdlID49IDcsIGFnZSA8IDEwKSAlPiUKICBmaWx0ZXIoY2hhcmFjdGVyICE9ICJlbGVwaGFudCIpCgpkMyA8LSBkMyAlPiUKICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlciksIGNoYXJhY3RlciAhPSAiIikKCmQ0IDwtIGQ0ICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgY2hhcmFjdGVyICE9ICIiKQpgYGAKCmBgYHtyIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9ufQojIG1ha2UgZGF0YWZyYW1lcyBmb3IgczEKIyBkMV9iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDEiLCAiYmVldGxlIikKIyBkMV9yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMSIsICJyb2JvdCIpCmQxX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMSIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIGZvbGxvdy11cCBzdHVkaWVzIHRvIHMxCmQxYl9hbGwgPC0gbWFrZURSREYoInN0dWR5IDFiIiwgImFsbCIpCmQxY19hbGwgPC0gbWFrZURSREYoInN0dWR5IDFjIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgMgojIGQyX2JlZXRsZSA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJiZWV0bGUiKQojIGQyX3JvYm90IDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgInJvYm90IikKZDJfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgMwojIGQzX2JlZXRsZSA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJiZWV0bGUiKQojIGQzX3JvYm90IDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgInJvYm90IikKZDNfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgNApkNF9hbGwgPC0gbWFrZURSREYoInN0dWR5IDQiLCAiYWxsIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyBBbmFseXNpcyBwbGFuCgpGb3IgYWxsIHN0dWRpZXMgd2UgY29uZHVjdCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgdXNpbmcgUGVhcnNvbiBjb3JyZWxhdGlvbnMgdG8gZmluZCBtaW5pbXVtIHJlc2lkdWFsIHNvbHV0aW9ucy4gCgpGb3IgZWFjaCBzdHVkeSwgd2UgZmlyc3QgZXhhbWluZSBtYXhpbWFsIHVucm90YXRlZCBhbmQgcm90YXRlZCBzb2x1dGlvbnMuIFRvIGRldGVybWluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0LCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBydWxlIG9mIHRodW1iOiBXaXRoICRwJCBvYnNlcnZhdGlvbnMgcGVyIHBhcnRpY2lwYW50LCB3ZSBjYW4gZXh0cmFjdCBhIG1heGltdW0gb2YgJGskIGZhY3RvcnMsIHdoZXJlICQocC1rKSoyID4gcCtrJCwgaS5lLiwgJGsgPCBwLzMkLiBUaHVzLCB3aXRoIDQwIG1lbnRhbCBjYXBhY2l0eSBpdGVtcywgd2UgY2FuIGV4dHJhY3QgYSBtYXhpbXVtIG9mIDEzIGZhY3RvcnMuCgpUbyBkZXRlcm1pbmUgaG93IG1hbnkgZmFjdG9ycyB0byByZXRhaW4sIHdlIHVzZSB0aGUgZm9sbG93aW5nIHByZXNldCByZXRlbnRpb24gY3JpdGVyaWEsIGNvbnNpZGVyaW5nIHRoZSB1bnJvdGF0ZWQgbWF4aW1hbCBzb2x1dGlvbiAodW5sZXNzIG90aGVyd2lzZSBub3RlZCk6CgogIC0gRWFjaCBmYWN0b3IgbXVzdCBoYXZlIGFuIGVpZ2VudmFsdWUgPjEuMC4KICAtIEVhY2ggZmFjdG9yIG11c3QgaW5kaXZpZHVhbGx5IGFjY291bnQgZm9yID41JSBvZiB0aGUgdG90YWwgdmFyaWFuY2UgaW4gdGhlIG1heGltYWwgbW9kZWwuCiAgLSBBZnRlciByb3RhdGlvbiwgZWFjaCBmYWN0b3IgbXVzdCBiZSB0aGUgZG9taW5hbnQgZmFjdG9yIChpLmUuLCB0aGUgZmFjdG9yIHdpdGggdGhlIGhpZ2hlc3QgZmFjdG9yIGxvYWRpbmcpIGZvciDiiaUxIG1lbnRhbCBjYXBhY2l0eSBpdGVtLgoKV2UgdGhlbiBleGFtaW5lIGFuZCBpbnRlcnByZXQgdmFyaW1heC1yb3RhdGVkIHNvbHV0aW9ucywgZXh0cmFjdGluZyBvbmx5IHRoZSBudW1iZXIgb2YgZmFjdG9ycyB0aGF0IG1lZXQgdGhlc2UgY3JpdGVyaWEuCgojIFN0dWR5IDEKClN0dWR5IGluZm9ybWF0aW9uOgoKKiBEZXNpZ246IDIgY29uZGl0aW9ucyAoYmVldGxlLCByb2JvdCksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogYWR1bHRzCiogRGF0ZSBjb25kdWN0ZWQ6IDIwMTYtMDctMDYgKE1UdXJrKQoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMSBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAxIikKZGVtb0R1cmF0aW9uKCJzdHVkeSAxIikKZGVtb0FnZSgic3R1ZHkgMSIpCmRlbW9HZW5kZXIoInN0dWR5IDEiKQpkZW1vUmFjZSgic3R1ZHkgMSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczEgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMV9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDFfYWxsX3Vucm90YXRlZCA8LSBmYShkMV9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMV9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QxX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDFfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMV9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczEgYWxsIHJvdGF0aW9ufQplZmFfZDFfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQxX2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDFfYWxsX3JvdGF0ZWQgPC0gZmEoZDFfYWxsLCBlZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxX2FsbCA8LSBlZmFfZDFfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QxX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMSBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxX2FsbF9yb3RhdGVkTiA8LSBmYShkMV9hbGwsIG5mYWN0b3JzX2QxX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QxX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDFfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMxIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgU3R1ZHkgMgoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogMiBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90KSwgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA3LTl5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBKdW5lIC0gRGVjZW1iZXIgMjAxNgoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMiBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAyIikKIyBkZW1vRHVyYXRpb24oInN0dWR5IDIiKQpkZW1vQWdlKCJzdHVkeSAyIikKZGVtb0dlbmRlcigic3R1ZHkgMiIpCiMgZGVtb1JhY2UoInN0dWR5IDIiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHMyIGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDJfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QyX2FsbF91bnJvdGF0ZWQgPC0gZmEoZDJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDJfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMyIGFsbCByb3RhdGlvbn0KZWZhX2QyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMl9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QyX2FsbF9yb3RhdGVkIDwtIGZhKGQyX2FsbCwgZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMl9hbGwgPC0gZWZhX2QyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMl9hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczIgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMl9hbGxfcm90YXRlZE4gPC0gZmEoZDJfYWxsLCBuZmFjdG9yc19kMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMl9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QyX2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzMiBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMl9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIFN0dWR5IDMgCgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiA3IGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QsIC4uLikgKyAyIGZvbGxvdy11cCBjb25kaXRpb25zLCAzLXBvaW50IHJlc3BvbnNlIHNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAiaGF2ZSBpbnRlbnRpb25zIgoqIFBvcHVsYXRpb246IDctOXlvIGNoaWxkcmVuCiogRGF0ZSBjb25kdWN0ZWQ6IEphbnVhcnkgLSBKdW5lIDIwMTcKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczMgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMyIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSAzIikKIyBkZW1vQWdlKCJzdHVkeSAzIikKIyBkZW1vR2VuZGVyKCJzdHVkeSAzIikKIyBkZW1vUmFjZSgic3R1ZHkgMyIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczMgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkM19hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDNfYWxsX3Vucm90YXRlZCA8LSBmYShkM19hbGwsIDYsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDNfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDNfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kM19hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QzX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMyBhbGwgcm90YXRpb259CmVmYV9kM19hbGxfcm90YXRlZF9tYXggPC0gZmEoZDNfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kM19hbGxfcm90YXRlZCA8LSBmYShkM19hbGwsIGVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDNfYWxsIDwtIGVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDNfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHMzIGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDNfYWxsX3JvdGF0ZWROIDwtIGZhKGQzX2FsbCwgbmZhY3RvcnNfZDNfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDNfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kM19hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyMjIEZhY3RvciBsb2FkaW5ncyB0YWJsZQoKYGBge3IgczMgbG9hZGluZ3MgdGFibGV9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDNfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKIyMjIFN1YnNjYWxlcwoKIyMjIyBSZWxpYWJpbGl0eSAoYW5kIGludGVyY29ycmVsYXRpb25zIC0gc2VlIGFscGhhKQoKYGBge3IgczMgc3Vic2NhbGUgcmVsaWFiaWxpdHl9CiMgQ3JvbmJhY2gncyBhbHBoYSAoc3Vic2NhbGVzKQprZXlzLmxpc3QgPC0gbGlzdChTT1VMID0gYygicHJpZGUiLCAiZGVwcmVzc2VkIiwgImRpc3Jlc3BlY3RlZCIsICJndWlsdCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iYXJyYXNzZWQiLCAiaGFwcHkiLCAibG92ZSIpLAogICAgICAgICAgICAgICAgICBCT0RZID0gYygiaHVuZ3J5IiwgIm9kb3JzIiwgImZlYXIiLCAicGFpbiIsICJ0aXJlZCIsICJhbmdyeSIsICJuYXVzZWF0ZWQiKSwKICAgICAgICAgICAgICAgICAgTUlORCA9IGMoInJlYXNvbmluZyIsICJjaG9pY2VzIiwgInJlbWVtYmVyaW5nIiwgInRlbXBlcmF0dXJlIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zY2lvdXMiLCAiZGVwdGgiKSkgCnNjb3JlcyA8LSBzY29yZUl0ZW1zKGtleXMubGlzdCwgZDNfYWxsLCBtaW4gPSAwLCBtYXggPSAxKSAgIyBvciBqdXN0IHVzZSB0aGUga2V5cy5saXQKIyBzdW1tYXJ5KHNjb3JlcykKc2NvcmVzCgojIG9tZWdhCm9tZWdhKGQzX2FsbCwgcGxvdCA9IEYpCmBgYAoKIyBTdHVkeSA0CgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiA3IGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QsIC4uLikgKyAyIGZvbGxvdy11cCBjb25kaXRpb25zIChkb2xsLCB0ZWRkeSBiZWFyKSwgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA0LTZ5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBNYXJjaCAyMDE3IC0gcHJlc2VudAoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzNCBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSA0IikKIyBkZW1vRHVyYXRpb24oInN0dWR5IDQiKQpkZW1vQWdlKCJzdHVkeSA0IikKIyBkZW1vR2VuZGVyKCJzdHVkeSA0IikKIyBkZW1vUmFjZSgic3R1ZHkgNCIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczQgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkNF9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDRfYWxsX3Vucm90YXRlZCA8LSBmYShkNF9hbGwsIDYsIHJvdGF0ZSA9ICJub25lIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kNF9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2Q0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2Q0X2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDRfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczQgYWxsIHJvdGF0aW9ufQplZmFfZDRfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQ0X2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDRfYWxsX3JvdGF0ZWQgPC0gZmEoZDRfYWxsLCBlZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2Q0X2FsbCA8LSBlZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2Q0X2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzNCBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2Q0X2FsbF9yb3RhdGVkTiA8LSBmYShkNF9hbGwsIG5mYWN0b3JzX2Q0X2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDRfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHM0IGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgQmlnIGZhY3RvciBsb2FkaW5ncyB0YWJsZSBmb3IgYWxsIHN0dWRpZXMgKFN0dWRpZXMgMS00KQoKYGBge3IgYWxsIHN0dWRpZXMgbG9hZGluZ3MgdGFibGV9CiMgbWFudWFsbHkgc2V0IDMgZmFjdG9ycwpvcmRlcl9zMV9tYW51YWwgPC0gbG9hZGluZ3MoZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSkpKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjFfbWFudWFsIikgJT4lCiAgcmVuYW1lKHMxX2hlYXJ0ID0gTVIyLCBzMV9ib2R5ID0gTVIxLCBzMV9taW5kID0gTVIzKQoKb3JkZXJfczEgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDFfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIxIikgJT4lCiAgcmVuYW1lKHMxX2hlYXJ0ID0gTVIyLCBzMV9ib2R5ID0gTVIxLCBzMV9taW5kID0gTVIzKQoKb3JkZXJfczIgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJlbmFtZShzMl9ib2R5ID0gTVIyLCBzMl9oZWFydCA9IE1SMSwgczJfbWluZCA9IE1SMykKCm9yZGVyX3MzIDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzX2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByZW5hbWUoczNfYm9keSA9IE1SMSwgczNfaGVhcnQgPSBNUjIsIHMzX21pbmQgPSBNUjMpCgpvcmRlcl9zNCA8LSBsb2FkaW5ncyhmYS5zb3J0KGVmYV9kNF9hbGxfcm90YXRlZE4pKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcmVuYW1lKHM0X2JvZHkgPSBNUjEsIAogICAgICAgICAjIHM0X2hlYXJ0ID0gTVIzLCAKICAgICAgICAgczRfbWluZCA9IE1SMikKCiMgbWFudWFsbHkgc2V0IDMgZmFjdG9ycwpvcmRlcl9zNF9tYW51YWwgPC0gbG9hZGluZ3MoZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSkpKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlcjFfbWFudWFsIikgJT4lCiAgcmVuYW1lKHM0X2hlYXJ0ID0gTVIyLCBzNF9ib2R5ID0gTVIxLCBzNF9taW5kID0gTVIzKQoKYmlnVGFibGUgPC0gb3JkZXJfczFfbWFudWFsICU+JSAjIGNvdWxkIHN1YnN0aXR1dGUgb3JkZXJfczEKICBmdWxsX2pvaW4ob3JkZXJfczIpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMykgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3M0X21hbnVhbCkgJT4lICMgY291bGQgc3Vic3RpdHV0ZSBvcmRlcl9zNAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJzIikpLCBmdW5zKHJvdW5kMikpICU+JQogIHNlbGVjdChvcmRlcjFfbWFudWFsLCAjIGNvdWxkIHN1YmlzdGl0dXRlIG9yZGVyX3MxCiAgICAgICAgIGNhcGFjaXR5LCBlbmRzX3dpdGgoImhlYXJ0IiksIGVuZHNfd2l0aCgiYm9keSIpLCBlbmRzX3dpdGgoIm1pbmQiKSkgCgpiaWdUYWJsZQpgYGAKCiMgRmlndXJlcwoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zLCBpbmNsdWRlID0gRn0KIyBib290c3RyYXAgOTUlIENJcyBmb3IgcmF0aW5ncyBieSBjaGFyYWN0ZXIgKG5vbnBhcmFtZXRyaWMpCiMgc3R1ZHkgMQpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczEgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInJlc3BvbnNlTnVtIiwKICAgICAgICAgICAgIHN1bW1hcnlfZnVuY3Rpb24gPSAibWVhbl9uYSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImNoYXJhY3RlciIsICJjYXBhY2l0eSIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJjaV9sb3dlcl9uYSIsICJtZWFuX25hIiwgImNpX3VwcGVyX25hIikpICU+JQogIGZ1bGxfam9pbihkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMSIpICU+JSBmaWx0ZXIoY2hhcmFjdGVyICE9ICJhbGwiKSkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDEiKQoKIyBzdHVkeSAyCmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMiA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBjaGFyYWN0ZXIsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2VOdW0iLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuX25hIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY2hhcmFjdGVyIiwgImNhcGFjaXR5IiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyX25hIiwgIm1lYW5fbmEiLCAiY2lfdXBwZXJfbmEiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSAyIikgJT4lIGZpbHRlcihjaGFyYWN0ZXIgIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIpCgojIHN0dWR5IDMKY2hhcl9wbG90dGluZ19yYXRpbmdzX3MzIDwtIGQzICU+JSAKICBzZWxlY3Qoc3ViaWQsIGNoYXJhY3RlciwgY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJyZXNwb25zZU51bSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2Z1bmN0aW9uID0gIm1lYW5fbmEiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJjaGFyYWN0ZXIiLCAiY2FwYWNpdHkiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygiY2lfbG93ZXJfbmEiLCAibWVhbl9uYSIsICJjaV91cHBlcl9uYSIpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDMiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAzIikKCiMgc3R1ZHkgNApjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczQgPC0gZDQgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInJlc3BvbnNlTnVtIiwKICAgICAgICAgICAgIHN1bW1hcnlfZnVuY3Rpb24gPSAibWVhbl9uYSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImNoYXJhY3RlciIsICJjYXBhY2l0eSIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJjaV9sb3dlcl9uYSIsICJtZWFuX25hIiwgImNpX3VwcGVyX25hIikpICU+JQogIGZ1bGxfam9pbihkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgNCIpICU+JSBmaWx0ZXIoY2hhcmFjdGVyICE9ICJhbGwiKSkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDQiKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHNldHVwIGNoYXJhY3RlciBtZWFucyBtZXJnZSwgaW5jbHVkZSA9IEZ9CmNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgPC0gY2hhcl9wbG90dGluZ19yYXRpbmdzX3MxICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczIpICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczMpICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczQpICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIG11dGF0ZShzdHVkeSA9IGZhY3RvcihzdHVkeSksCiAgICAgICAgIGNvbmRpdGlvbiA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJkb2xsIiwgInRlZGR5X2JlYXIiLCAicm9ib3QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSkpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2FwYWNpdHkgd29yZGluZ3MsIGluY2x1ZGUgPSBGfQpjaGFyX3Bsb3R0aW5nX3dvcmRpbmdzIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChjYXBhY2l0eSkgJT4lCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoY2FwYWNpdHksCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2UuLi4gY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLi4uIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2suLi4iLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbC4uLiIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMuLi4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcy4uLiIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5Li4uIiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLi4uIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHNldHVwIGxvYWRpbmdzLCBpbmNsdWRlID0gRn0KIyBtZXJnZSB3aXRoIGxvYWRpbmdzLCBvcmRlcmluZ3MsIGFuZCBkb21pbmFudCBmYWN0b3JzIGZyb20gZWFjaCBzdHVkeSAKY2hhcl9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfYWxsICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3dvcmRpbmdzKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczEgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHMxX01SMSA9IHMxX2JvZHksIHMxX01SMiA9IHMxX2hlYXJ0LCBzMV9NUjMgPSBzMV9taW5kKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczFfTVIxX2FicyA9IGFicyhzMV9NUjEpLAogICAgICAgICAgICAgICAgICAgICBzMV9NUjJfYWJzID0gYWJzKHMxX01SMiksCiAgICAgICAgICAgICAgICAgICAgIHMxX01SM19hYnMgPSBhYnMoczFfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczFfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMxX01SMV9hYnMgPiBzMV9NUjJfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9NUjFfYWJzID4gczFfTVIzX2FicywgIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczFfTVIyX2FicyA+IHMxX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9NUjJfYWJzID4gczFfTVIzX2FicywgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMV9NUjNfYWJzID4gczFfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9NUjNfYWJzID4gczFfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgICAgICAgICAgICAgICAgICBzMV9jb2xvciA9IHJlY29kZShzMV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIiA9ICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIiA9ICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiID0gIiM0REFGNEEiKSwKICAgICAgICAgICAgICAgICAgICAgczFfb3JkZXIgPSBhcy5udW1lcmljKG9yZGVyMSkpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczFfTVIxX2FicywgLXMxX01SMl9hYnMsIC1zMV9NUjNfYWJzKSkgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MyICU+JQogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgICAgICAgICAgICByZW5hbWUoczJfTVIxID0gczJfaGVhcnQsIHMyX01SMiA9IHMyX2JvZHksIHMyX01SMyA9IHMyX21pbmQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzMl9NUjFfYWJzID0gYWJzKHMyX01SMSksCiAgICAgICAgICAgICAgICAgICAgIHMyX01SMl9hYnMgPSBhYnMoczJfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgczJfTVIzX2FicyA9IGFicyhzMl9NUjMpLAogICAgICAgICAgICAgICAgICAgICBzMl9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczJfTVIxX2FicyA+IHMyX01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyX01SMV9hYnMgPiBzMl9NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMl9NUjJfYWJzID4gczJfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyX01SMl9hYnMgPiBzMl9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMyX01SM19hYnMgPiBzMl9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyX01SM19hYnMgPiBzMl9NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHMyX2NvbG9yID0gcmVjb2RlKHMyX2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpKSAlPiUKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gInMyX29yZGVyIikgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMyX29yZGVyID0gYXMubnVtZXJpYyhzMl9vcmRlcikpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczJfTVIxX2FicywgLXMyX01SMl9hYnMsIC1zMl9NUjNfYWJzKSkgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MzICU+JQogICAgICAgICAgICAgIHJlbmFtZShzM19NUjEgPSBzM19oZWFydCwgczNfTVIyID0gczNfYm9keSwgczNfTVIzID0gczNfbWluZCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMzX01SMV9hYnMgPSBhYnMoczNfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczNfTVIyX2FicyA9IGFicyhzM19NUjIpLAogICAgICAgICAgICAgICAgICAgICBzM19NUjNfYWJzID0gYWJzKHMzX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMzX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzM19NUjFfYWJzID4gczNfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIxX2FicyA+IHMzX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMzX01SMl9hYnMgPiBzM19NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIyX2FicyA+IHMzX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczNfTVIzX2FicyA+IHMzX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIzX2FicyA+IHMzX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczNfY29sb3IgPSByZWNvZGUoczNfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjNERBRjRBIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczNfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczNfb3JkZXIgPSBhcy5udW1lcmljKHMzX29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zM19NUjFfYWJzLCAtczNfTVIyX2FicywgLXMzX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczQgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHM0X01SMSA9IHM0X2JvZHksIHM0X01SMiA9IHM0X21pbmQpICU+JSAjLCBzNF9NUjMgPSBzNF9oZWFydCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHM0X01SMV9hYnMgPSBhYnMoczRfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczRfTVIyX2FicyA9IGFicyhzNF9NUjIpLAogICAgICAgICAgICAgICAgICAgICAjIHM0X01SM19hYnMgPSBhYnMoczRfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczRfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHM0X01SMV9hYnMgPiBzNF9NUjJfYWJzLCAiQk9EWSIsICJNSU5EIiksCiAgICAgICAgICAgICAgICAgICAgICMgczRfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICMgICBpZmVsc2UoczRfTVIxX2FicyA+IHM0X01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgczRfTVIxX2FicyA+IHM0X01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICBpZmVsc2UoczRfTVIyX2FicyA+IHM0X01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgIHM0X01SMl9hYnMgPiBzNF9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICBpZmVsc2UoczRfTVIzX2FicyA+IHM0X01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICBzNF9NUjNfYWJzID4gczRfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHM0X2NvbG9yID0gcmVjb2RlKHM0X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpKSAlPiUKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gInM0X29yZGVyIikgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHM0X29yZGVyID0gYXMubnVtZXJpYyhzNF9vcmRlcikpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczRfTVIxX2FicywgLXM0X01SMl9hYnMpKSAjLCAtczRfTVIzX2FicykpCgojIGNvbmZpZ3VyZSBwbG90IGxhYmVscwpsYWJlbF9kZl9zMSA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDEiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCmxhYmVsX2RmX3MyIDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMiIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKbGFiZWxfZGZfczMgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAzIikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQpsYWJlbF9kZl9zNCA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDQiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCgpmYWNldExhYnNfczEgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMSIpKSkKZmFjZXRMYWJzX3MyIDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDIiKSkpCmZhY2V0TGFic19zMyA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAzIikpKQpmYWNldExhYnNfczQgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgNCIpKSkKCiMgY29uZmlndXJlIGN1c3RvbSBwYWxldHRlCm15UGFsZXR0ZSA8LSBicmV3ZXIucGFsKDMsICJTZXQxIik7IG5hbWVzKG15UGFsZXR0ZSkgPC0gYygiSEVBUlQiLCAiQk9EWSIsICJNSU5EIikKCnBhbGV0dGVfYmFzZSA8LSBjaGFyX3Bsb3R0aW5nICU+JSAKICBzZWxlY3QoY2FwYWNpdHksIGVuZHNfd2l0aCgiX2ZhY3RvciIpKSAlPiUKICBkaXN0aW5jdCgpCiMgYWRqdXN0IGJ5IGhhbmQgZGVwZW5kaW5nIG9uIG9yZGVyIG9mIGZhY3RvcnMhIQpwYWxldHRlX3MxIDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSkpCnBhbGV0dGVfczIgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkJPRFkiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczJfZmFjdG9yID09ICJCT0RZIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczJfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSkKcGFsZXR0ZV9zMyA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzM19mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzM19mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpKQojIHBhbGV0dGVfczQgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHM0X2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKIyAgICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczRfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSwKIyAgICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSkpCmBgYAoKIyMgM0Qgc2NhdHRlcnBsb3RzCgpGYWN0b3IgbG9hZGluZ3MgZm9yIHRoZSA0MCBtZW50YWwgY2FwYWNpdGllcyBvbiB0aGUgdGhyZWUgcm90YXRlZCBmYWN0b3JzIGluIFN0dWR5IDEuIEl0ZW1zIGFyZSBjb2xvcmVkIGJ5IHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nOiBJdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBib2R5IGZhY3RvciAoYm9kaWx5IHN0YXRlcyBhbmQgd2lsbCkgYXJlIGluIHJlZDsgaXRlbXMgdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGUgaGVhcnQgZmFjdG9yIChzb2NpYWwtZW1vdGlvbmFsIGV4cGVyaWVuY2VzIGFuZCBtb3JhbGl0eSkgYXJlIGluIGJsdWU7IGFuZCBpdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBtaW5kIGZhY3RvciAocGVyY2VwdHVhbC1jb2duaXRpdmUgYWJpbGl0aWVzIGFuZCBnb2FsIHB1cnN1aXQpIGFyZSBpbiBncmVlbi4KCiMjIyBTdHVkeSAxIChhZHVsdHMpCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzMX0KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczEgPC0gbG9hZGluZ3MoZWZhX2QxX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLCBsaWtlIHdoZW4geW91IHN0b3AgeW91cnNlbGYgZnJvbSBkb2luZyBzb21ldGhpbmcgeW91IHNob3VsZG4ndCBkbyIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMsIGxpa2Ugd2hlbiB5b3UncmUgd29ya2luZyBoYXJkIHRvIGRvIHNvbWV0aGluZyBvciBtYWtlIHNvbWV0aGluZyBoYXBwZW4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJvdWQgPSAicHJvdWQiKSkpCgojIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwpzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHJlbmFtZShCT0RZID0gTVIxLAogICAgICAgICBIRUFSVCA9IE1SMiwKICAgICAgICAgTUlORCA9IE1SMykgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczEpICU+JQogIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAogICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiM0REFGNEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgcGxvdCEKZmlnUzEgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gfkhFQVJULCB5ID0gfkJPRFksIHogPSB+TUlORCwKICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgIGNvbG9yID0gfmRvbWluYW50LCBjb2xvcnMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiAgICAgICAgICAgICB0ZXh0ID0gfnNob3J0LAogICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKCmZpZ1MxCmBgYAoKIyMjIFN0dWR5IDIgKDctOXlvKQoKYGBge3IgZmlndXJlIDNkIHNjYXR0ZXIgczJ9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nX3MyIDwtIGxvYWRpbmdzKGVmYV9kMl9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShpdGVtLAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGNsb3NlIGJ5IG9yIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcywgbGlrZSB3aGVuIHlvdSB0aGluayBzb21ldGhpbmcgaXMgdHJ1ZSIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLCBsaWtlIHdoZW4geW91IGZlZWwgbGlrZSB5b3UgbWlnaHQgdGhyb3cgdXAiLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbCwgbGlrZSB3aGVuIHlvdSBzdG9wIHlvdXJzZWxmIGZyb20gZG9pbmcgc29tZXRoaW5nIHlvdSBzaG91bGRuJ3QgZG8iLAogICAgICAgICAgIGludGVudGlvbnMgPSAibWFrZSBwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLCBsaWtlIHdoZW4geW91J3JlIHdvcmtpbmcgaGFyZCB0byBkbyBzb21ldGhpbmcgb3IgbWFrZSBzb21ldGhpbmcgaGFwcGVuIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMsIGxpa2Ugd2hlbiB5b3UgcmVhbGx5IHdhbnQgc29tZXRoaW5nIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHksIGxpa2Ugd2hlbiBzb21lb25lIGlzIHNoeSBhbmQgc29tZWJvZHkgZWxzZSBpcyBzaWxseSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZSwgbGlrZSB3aGVuIHNvbWV0aGluZyBmZWVscyByZWFsbHkgZ29vZCIsCiAgICAgICAgICAgcHJvdWQgPSAiZmVlbCBwcm91ZCIpKSkgJT4lCiAgICBtdXRhdGUoc2hvcnQgPSBmYWN0b3IoCiAgICAgIHJlY29kZShpdGVtLAogICAgICAgICAgICAgaGFwcHkgPSAiaGFwcHkiLAogICAgICAgICAgICAgZGVwcmVzc2VkID0gInNhZCIsCiAgICAgICAgICAgZmVhciA9ICJzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJ0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIiwKICAgICAgICAgICBkZXB0aCA9ICJkZXB0aCIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gIm1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gInRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIiLAogICAgICAgICAgIGJlbGllZnMgPSAiYmVsaWVmcyIsCiAgICAgICAgICAgaHVuZ3J5ID0gImh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAidGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAicGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gInNpY2siLAogICAgICAgICAgIHNhZmUgPSAic2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUiLAogICAgICAgICAgIGd1aWx0ID0gImd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUiLAogICAgICAgICAgIGNob2ljZXMgPSAiY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAic2VsZi1jb250cm9sIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gInBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImdvYWxzIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYXdhcmUiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAic2VsZi1hd2FyZSIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJkZXNpcmVzIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gImVtcGF0aHkiLAogICAgICAgICAgIGpveSA9ICJqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gIm1vcmFsaXR5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJwZXJzb25hbGl0eSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAicGxlYXN1cmUiLAogICAgICAgICAgIHByb3VkID0gInByb3VkIikpKQoKIyBtYWtlIGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcKc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICByZW5hbWUoQk9EWSA9IE1SMSwKICAgICAgICAgSEVBUlQgPSBNUjIsCiAgICAgICAgIE1JTkQgPSBNUjMpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MyKSAlPiUKICBtdXRhdGUoZG9taW5hbnQgPSBmYWN0b3IoCiAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCAiQk9EWSIsCiAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKSwKICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCBhYnMoSEVBUlQpLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgYWJzKE1JTkQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgY29sb3IgPSBpZmVsc2UoZG9taW5hbnQgPT0gIkJPRFkiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIkhFQVJUIiwgIiM0REFGNEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpCgojIHBsb3QhCmZpZ1MyIDwtIHBsb3RfbHkoc2NhdHRlcl9wbG90dGluZywgeCA9IH5IRUFSVCwgeSA9IH5CT0RZLCB6ID0gfk1JTkQsCiAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIzZCIsCiAgICAgICAgICAgICBjb2xvciA9IH5kb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAogICAgICAgICAgICAgdGV4dCA9IH5zaG9ydCwKICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAogICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAogICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCgpmaWdTMgpgYGAKCiMjIyBTdHVkeSAzICg3LTl5bykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHMzfQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zMyA8LSBsb2FkaW5ncyhlZmFfZDNfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcm91ZCA9ICJwcm91ZCIpKSkKCiMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCnNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgcmVuYW1lKEJPRFkgPSBNUjEsCiAgICAgICAgIEhFQVJUID0gTVIyLAogICAgICAgICBNSU5EID0gTVIzKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMykgJT4lCiAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAogICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAogICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjNERBRjRBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBwbG90IQpmaWdzMyA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSB+SEVBUlQsIHkgPSB+Qk9EWSwgeiA9IH5NSU5ELAogICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAogICAgICAgICAgICAgY29sb3IgPSB+ZG9taW5hbnQsIGNvbG9ycyA9IGMoIiMzNzdFQjgiLCAiIzREQUY0QSIsICIjRTQxQTFDIiksCiAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKICAgICAgICAgICAgIHRleHQgPSB+c2hvcnQsCiAgICAgICAgICAgICB0ZXh0Zm9udCA9IGxpc3Qoc2l6ZSA9IDE1KSwKICAgICAgICAgICAgIG1vZGUgPSAidGV4dCttYXJrZXJzIiwKICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQoKZmlnczMKYGBgCgojIyMgU3R1ZHkgNCAoNC02eW8pCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzNH0KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczQgPC0gbG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLCBsaWtlIHdoZW4geW91IHN0b3AgeW91cnNlbGYgZnJvbSBkb2luZyBzb21ldGhpbmcgeW91IHNob3VsZG4ndCBkbyIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMsIGxpa2Ugd2hlbiB5b3UncmUgd29ya2luZyBoYXJkIHRvIGRvIHNvbWV0aGluZyBvciBtYWtlIHNvbWV0aGluZyBoYXBwZW4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJvdWQgPSAicHJvdWQiKSkpCgojICMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCiMgc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDRfYWxsX3JvdGF0ZWROKVtdICU+JQojICAgZGF0YS5mcmFtZSgpICU+JQojICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiMgICByZW5hbWUoQk9EWSA9IE1SMSwKIyAgICAgICAgICBIRUFSVCA9IE1SMiwKIyAgICAgICAgICBNSU5EID0gTVIzKSAlPiUKIyAgIGZ1bGxfam9pbih3b3JkaW5nX3M0KSAlPiUKIyAgIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKIyAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAojICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiMgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiMgICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiMgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAojICAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKIyAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjNERBRjRBIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjRTQxQTFDIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKIyAKIyAjIHBsb3QhCiMgZmlnczQgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gfkhFQVJULCB5ID0gfkJPRFksIHogPSB+TUlORCwKIyAgICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAojICAgICAgICAgICAgICBjb2xvciA9IH5kb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKIyAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiMgICAgICAgICAgICAgIHRleHQgPSB+c2hvcnQsCiMgICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAojICAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiMgICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQojIAojIGZpZ3M0CmBgYAoKIyMgSGVhdG1hcHMKCipOT1RFOiBzZXQgdG8gMyBmYWN0b3JzIG1hbnVhbGx5LCBmb3Igbm93LioKCiMjIyBTdHVkeSAxIChhZHVsdHMpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzMSwgZmlnLndpZHRoID0gNywgZmlnLmhlaWdodCA9IDd9CmZhY3RvcnNfczEgPC0gZmEuc29ydChmYShkMV9hbGwsIG5mYWN0b3JzID0gMywgY29yID0gY2hvc2VuQ29yVHlwZSwgcm90YXRlID0gY2hvc2VuUm90VHlwZSkkbG9hZGluZ3NbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MxKSAlPiUKICBzZWxlY3Qod29yZGluZywgTVIxLCBNUjIsIE1SMykgJT4lCiAgcmVuYW1lKGNhcGFjaXR5ID0gd29yZGluZywgRmFjdG9yMSA9IE1SMSwgRmFjdG9yMiA9IE1SMiwgRmFjdG9yMyA9IE1SMykgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKQoKZmFjdG9yc19zMV9sb25nIDwtIGZhY3RvcnNfczEgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MxX2JsYW5rMSA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3MxX2JsYW5rMiA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zMV9ibGFuazIgPC0gZmFjdG9yc19zMV9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MxX2JsYW5rMyA8LSBmYWN0b3JzX3MxX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MxX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MxX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczFfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MxX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MxX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKYGBgCgojIyMgU3R1ZHkgMiAoNy05eSkKCmBgYHtyIGZpZ3VyZSBoZWF0bWFwIHMyLCBmaWcud2lkdGggPSA3LCBmaWcuaGVpZ2h0ID0gN30KZmFjdG9yc19zMiA8LSBmYS5zb3J0KGZhKGQyX2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczIpICU+JQogIHNlbGVjdCh3b3JkaW5nLCBNUjEsIE1SMiwgTVIzKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyLCBGYWN0b3IzID0gTVIzKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyIikgJT4lCiAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpCgpmYWN0b3JzX3MyX2xvbmcgPC0gZmFjdG9yc19zMiAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvcikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjIiLCAiRjEiLCAiRjMiKSkpICU+JQogIGFycmFuZ2Uob3JkZXIsIGZhY3RvcikKCmZhY3RvcnNfczJfYmxhbmsxIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykpKQpmYWN0b3JzX3MyX2JsYW5rMiA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMSIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykqMi8zKSkpCiMgZmFjdG9yc19zMl9ibGFuazIgPC0gZmFjdG9yc19zMl9sb25nICU+JQojICAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMiIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczJfYmxhbmszIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgIT0gIkYzIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczJfbG9uZyRsb2FkaW5nKSoxLzMpKSkKCiMgZ2dwbG90KGZhY3RvcnNfczJfYmxhbmsxLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zMl9ibGFuazIsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczJfYmxhbmszLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAoKZ2dwbG90KGZhY3RvcnNfczJfbG9uZywgYWVzKHggPSBmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIyBTdHVkeSAzICg3LTl5KQoKYGBge3IgZmlndXJlIGhlYXRtYXAgczMsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSA3fQpmYWN0b3JzX3MzIDwtIGZhLnNvcnQoZmEoZDNfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBsZWZ0X2pvaW4od29yZGluZ19zMykgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczNfbG9uZyA8LSBmYWN0b3JzX3MzICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MzX2JsYW5rMSA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3MzX2JsYW5rMiA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczNfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zM19ibGFuazIgPC0gZmFjdG9yc19zM19sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MzX2JsYW5rMyA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MzX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczNfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MzX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDYpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAwLjUxLCB4bWF4ID0gMS40OSwgeW1pbiA9IDE0LjU1LCB5bWF4ID0gMjAuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDEuNTEsIHhtYXggPSAyLjQ5LCB5bWluID0gNi41NSwgeW1heCA9IDE0LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAyLjUxLCB4bWF4ID0gMy40OSwgeW1pbiA9IDAuNTUsIHltYXggPSA2LjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyB0aGVtZV9idygpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKYGBgCgojIyMgU3R1ZHkgNCAoNC02eSkKKDMgZmFjdG9ycyBieSBmb3JjZSkKCmBgYHtyIGZpZ3VyZSBoZWF0bWFwIHM0LCBmaWcud2lkdGggPSA1LCBmaWcuaGVpZ2h0ID0gN30KZmFjdG9yc19zNCA8LSBmYS5zb3J0KGZhKGQ0X2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgbGVmdF9qb2luKHdvcmRpbmdfczQpICU+JQogIHNlbGVjdCh3b3JkaW5nLCBNUjEsIE1SMiwgTVIzKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyLCBGYWN0b3IzID0gTVIzKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyIikgJT4lCiAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpCgpmYWN0b3JzX3M0X2xvbmcgPC0gZmFjdG9yc19zNCAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvcikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjIiLCAiRjEiLCAiRjMiKSkpICU+JQogIGFycmFuZ2Uob3JkZXIsIGZhY3RvcikKCmZhY3RvcnNfczRfYmxhbmsxIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykpKQojIGZhY3RvcnNfczRfYmxhbmsyIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKIyAgIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjEiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3M0X2JsYW5rMiA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMiIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczRfYmxhbmszIDwtIGZhY3RvcnNfczRfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgIT0gIkYzIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczRfbG9uZyRsb2FkaW5nKSoxLzMpKSkKCiMgZ2dwbG90KGZhY3RvcnNfczRfYmxhbmsxLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zNF9ibGFuazIsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczRfYmxhbmszLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAoKZ2dwbG90KGZhY3RvcnNfczRfbG9uZywgYWVzKHggPSBmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gNikgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIE1lYW4gcmF0aW5ncwoKIyMjIFN0dWRpZXMgMS0yCgpNZWFuIHJhdGluZ3Mgb2YgNDAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSAyIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMS0yLiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgMy1wb2ludCBzY2FsZSAoMCA9ICJubyIsIDAuNSA9ICJraW5kYSIsIDEgPSAieWVzIikuIEVycm9yIGJhcnMgYXJlIG5vbnBhcmFtZXRyaWMgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscy4gTWVudGFsIGNhcGFjaXRpZXMgYXJlIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nIGluIFN0dWR5IDEgKGFkdWx0cykuCgpgYGB7ciBmaWd1cmUgbWVhbiByYXRpbmdzIHMxLXMyLCBmaWcud2lkdGggPSAzLCBmaWcuaGVpZ2h0ID0gM30KIyBtYWtlIGRhdGFmcmFtZQpzMTJfcGxvdHRpbmcgPC0gY2hhcl9wbG90dGluZyAlPiUKICBmaWx0ZXIoc3R1ZHkgJWluJSBjKCJzdHVkeSAxIiwgInN0dWR5IDIiKSkgJT4lCiAgZGlzdGluY3QoKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczEyIDwtIGdncGxvdChzMTJfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gc3VtbWFyeV9tZWFuX25hLCB4ID0gcmVvcmRlcih3b3JkaW5nLCBkZXNjKHMxX29yZGVyKSksCiAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBmYWN0b3IoczFfY29sb3IpLCBzaGFwZSA9IHN0dWR5KSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpLCBzaXplID0gMikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyX25hLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlcl9uYSksIHdpZHRoID0gMC40LAogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBmYWNldF93cmFwKH4gY2hhcmFjdGVyKSArCiAgdGhlbWVfYncoKSArCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiXG5NZWFuIHJhdGluZyIsCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoMCwgMC41LCAxKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiMFxuKG5vKSIsICIwLjVcbihraW5kYSkiLCAiMVxuKHllcykiKSkgKwogIHNjYWxlX3NoYXBlX2Rpc2NyZXRlKG5hbWUgPSAiU3R1ZHk6IiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTdHVkeSAxOiBhZHVsdHMiLCAiU3R1ZHkgMjogNy05eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfYnJld2VyKG5hbWUgPSAiRmFjdG9yOiIsCiAgIyAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAicXVhbCIsIHBhbGV0dGUgPSA2LAogICMgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IEZBTFNFKSArCiAgc2NhbGVfY29sb3VyX21hbnVhbChuYW1lID0gIkZhY3RvcjoiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygiI0U0MUExQyIsICIjNERBRjRBIiwgIiMzNzdFQjgiKSwKICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkJPRFkiLCAiTUlORCIsICJIRUFSVCIpKSArCiAgY29vcmRfZmxpcCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5KSwKICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IHBhbGV0dGVfczEpLAogICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLAogICAgICBsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiKQoKczEyCmBgYAoKIyMjIFN0dWRpZXMgMy00CgpNZWFuIHJhdGluZ3Mgb2YgMjAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSA5IGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMy00LiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgMy1wb2ludCBzY2FsZSAoMCA9ICJubyIsIDAuNSA9ICJraW5kYSIsIDEgPSAieWVzIikuIEVycm9yIGJhcnMgYXJlIG5vbnBhcmFtZXRyaWMgYm9vdHN0cmFwcGVkIDk1JSBjb25maWRlbmNlIGludGVydmFscy4gTWVudGFsIGNhcGFjaXRpZXMgYXJlIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nIGluIFN0dWR5IDMgKDctOXkpLgoKYGBge3IgZmlndXJlIG1lYW4gcmF0aW5ncyBzMy1zNCwgZmlnLndpZHRoID0gNSwgZmlnLmhlaWdodCA9IDN9CiMgbWFrZSBkYXRhZnJhbWUKczM0X3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmcgJT4lCiAgZmlsdGVyKHN0dWR5ICVpbiUgYygic3R1ZHkgMyIsICJzdHVkeSA0IiksCiAgICAgICAgICFpcy5uYShzM19vcmRlciksICFpcy5uYShjaGFyYWN0ZXIpLCAhaXMubmEoY2FwYWNpdHkpKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwgInJvYm90IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczM0IDwtIGdncGxvdChzMzRfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gc3VtbWFyeV9tZWFuX25hLCB4ID0gcmVvcmRlcih3b3JkaW5nLCBkZXNjKHMzX29yZGVyKSksIAogICAgICAgICAgICAgICAgICAgIyBjb2xvdXIgPSBzdHVkeSwKICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IHMzX2NvbG9yLAogICAgICAgICAgICAgICAgICAgc2hhcGUgPSBzdHVkeSkpICsKICBnZW9tX3BvaW50KHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSwgc2l6ZSA9IDIpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gc3VtbWFyeV9jaV9sb3dlcl9uYSwgeW1heCA9IHN1bW1hcnlfY2lfdXBwZXJfbmEpLCB3aWR0aCA9IDAuNCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpKSArCiAgZmFjZXRfd3JhcCh+IGNoYXJhY3RlciwgbmNvbCA9IDkpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwXG4obm8pIiwgIjAuNVxuKGtpbmRhKSIsICIxXG4oeWVzKSIpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDM6IDctOXkiLCAiU3R1ZHkgNDogNC02eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICMgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU3R1ZHkgMzogNy05eSIsICJTdHVkeSA0OiA0LTZ5IikpICsKICAjIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAjICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgIyAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjRTQxQTFDIiwgIiMzNzdFQjgiLCAiIzREQUY0QSIpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikpICsKICBjb29yZF9mbGlwKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDkpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQoKczM0CmBgYAoKIyBNZWFuIGZhY3RvciBzY29yZXMKCiMjIFN0dWRpZXMgMS0yCgpgYGB7ciBzMTIgYWxsIG5vIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBtYWtlIGNvbWJpbmVkIGRhdGFzZXQKZDEyX2FsbCA8LSBkMV9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICBmdWxsX2pvaW4oZDJfYWxsICU+JSByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKQoKIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDEyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3Vucm90YXRlZCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDEyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDEyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMTJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMTJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMxMiBhbGwgcm90YXRpb24sIGluY2x1ZGUgPSBGfQplZmFfZDEyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMTJfYWxsX3JvdGF0ZWQgPC0gZmEoZDEyX2FsbCwgZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMTJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDEyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxMl9hbGwgPC0gZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDEyX2FsbApgYGAKCmBgYHtyIHMxMiBhbGwgdmFyaW1heCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3JvdGF0ZWROIDwtIGZhKGQxMl9hbGwsIG5mYWN0b3JzX2QxMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgbWlzc2luZyA9IFRSVUUpICMgaW1wdXRlIG1pc3NpbmcgdmFsdWVzCnByaW50KGVmYV9kMTJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMTJfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKYGBge3IgczEyIGxvYWRpbmdzIHRhYmxlLCBpbmNsdWRlID0gRn0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMTJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zMTJfcGxvdHRpbmcgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZDIgJT4lIAogICAgICAgICAgICAgIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICAgICAgICAgICAgICBkaXN0aW5jdCgpICU+JSAKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJzY29yZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImFnZV9ncm91cCIsICJjaGFyYWN0ZXIiLCAiZmFjdG9yIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoIm1lYW4iLCAiY2lfbG93ZXIiLCAiY2lfdXBwZXIiKSkKYGBgCgpgYGB7ciBzMTIgcmVncmVzc2lvbn0KdGVtcEMgPC0gZDEgJT4lIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkMiAlPiUgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihkYXRhLmZyYW1lKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcykgJT4lCiAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICAgICAgICAgICAgICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgLXN1YmlkKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpLAogICAgICAgICBhZ2VfZ3JvdXAgPSBmYWN0b3IoYWdlX2dyb3VwKSwKICAgICAgICAgY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICMgJT4lCiAgIyBmaWx0ZXIoIWlzLm5hKGZhY3RvciksICFpcy5uYShhZ2VfZ3JvdXApLCAhaXMubmEoY2hhcmFjdGVyKSkKCmNvbnRyYXN0cyh0ZW1wQyRmYWN0b3IpID0gY2JpbmQoZmFjdG9yMSA9IGMoMSwgLTEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvcjMgPSBjKDAsIC0xLCAxKSkKCmNvbnRyYXN0cyh0ZW1wQyRhZ2VfZ3JvdXApID0gY2JpbmQoY2hpbGRyZW4gPSBjKC0xLCAxKSkKY29udHJhc3RzKHRlbXBDJGNoYXJhY3RlcikgPSBjYmluZChyb2JvdCA9IGMoLTEsIDEpKQoKbGlicmFyeShsbWU0KQpyMSA8LSBsbWVyKHNjb3JlIH4gY2hhcmFjdGVyICogZmFjdG9yICogYWdlX2dyb3VwICsgKDEgfCBzdWJpZCkgLCB0ZW1wQykKc3VtbWFyeShyMSkKCiMgbGlicmFyeShicm1zKQojIHIxYiA8LSBicm0oc2NvcmUgfiBjaGFyYWN0ZXIgKiBmYWN0b3IgKiBhZ2VfZ3JvdXAgKyAoMSB8IHN1YmlkKSAsIHRlbXBDLAojICAgICAgICAgICAgIGZhbWlseSA9ICJnYXVzc2lhbiIpCiMgc3VtbWFyeShyMWIpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CiMgcGxvdApnZ3Bsb3Qoc2NvcmVzX3MxMl9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICAgICAgICAgYWdlX2dyb3VwID0gZmFjdG9yKGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV2ZWxzID0gYygiYWR1bHRzIiwgImNoaWxkcmVuXzc5IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxhYmVscyA9IGMoImFkdWx0cyIsICJjaGlsZHJlbiIpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjaGlsZHJlbl83OSIsICJhZHVsdHMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNoaWxkcmVuIiwgImFkdWx0cyIpKSksCiAgICAgICBhZXMoeCA9IGFnZV9ncm91cCwgeSA9IHN1bW1hcnlfbWVhbiwgY29sb3IgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgZ2VvbV9wb2ludChzaXplID0gNSwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gc3VtbWFyeV9jaV9sb3dlciwgeW1heCA9IHN1bW1hcnlfY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTksIDE1KSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBhZ2UgZ3JvdXAiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJBZHVsdHMgKFN0dWR5IDEpIHZzLiBjaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSBncm91cCIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWR5IDMKCmBgYHtyIHMzIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zM19wbG90dGluZyA8LSBkMyAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDNfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJzY29yZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImFnZV9ncm91cCIsICJjaGFyYWN0ZXIiLCAiZmFjdG9yIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoIm1lYW4iLCAiY2lfbG93ZXIiLCAiY2lfdXBwZXIiKSkKYGBgCgpgYGB7ciBzMyBmaWd1cmUgZmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQpnZ3Bsb3Qoc2NvcmVzX3MzX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5IGJlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSksCiAgICAgICAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YyIiwgInNjb3JlX0YxIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsICJCb2RpbHkiLCAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBjaGFyYWN0ZXIsIHkgPSBzdW1tYXJ5X21lYW4sIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gZmFjdG9yLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciksIAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCAxOSwgcmVwKDE3LCA0KSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIHJlcCgxNywgMiksIDE5LCByZXAoMTcsIDQpKSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBjaGFyYWN0ZXIiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgoKIyMgU3R1ZGllcyAzLTQKCmBgYHtyIHMzNCBhbGwgbm8gcm90YXRpb24sIGluY2x1ZGUgPSBGfQojIG1ha2UgY29tYmluZWQgZGF0YXNldApkMzRfYWxsIDwtIGQzX2FsbCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogIGZ1bGxfam9pbihkNF9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzdWJpZCIpCgojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMzRfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzNF9hbGxfdW5yb3RhdGVkIDwtIGZhKGQzNF9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMzRfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMzRfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDM0X2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QzNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QzNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczM0IGFsbCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CmVmYV9kMzRfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQzNF9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QzNF9hbGxfcm90YXRlZCA8LSBmYShkMzRfYWxsLCBlZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QzNF9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QzNF9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDM0X2FsbCA8LSBlZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMzRfYWxsCmBgYAoKYGBge3IgczM0IGFsbCB2YXJpbWF4IHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzNF9hbGxfcm90YXRlZE4gPC0gZmEoZDM0X2FsbCwgbmZhY3RvcnNfZDM0X2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yZXMgPSAidGVuQmVyZ2UiLCBtaXNzaW5nID0gVFJVRSkgIyBpbXB1dGUgbWlzc2luZyB2YWx1ZXMKcHJpbnQoZWZhX2QzNF9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QzNF9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QzNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgpgYGB7ciBzMzQgbG9hZGluZ3MgdGFibGUsIGluY2x1ZGUgPSBGfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzNF9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgpgYGB7ciBzMzQgZmlndXJlIHNldHVwLCBpbmNsdWRlID0gRn0Kc2NvcmVzX3MzNF9wbG90dGluZyA8LSBkMyAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkNCAlPiUgCiAgICAgICAgICAgICAgc2VsZWN0KHN1YmlkLCBhZ2VfZ3JvdXAsIGNoYXJhY3RlcikgJT4lIAogICAgICAgICAgICAgIGRpc3RpbmN0KCkgJT4lIAogICAgICAgICAgICAgIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QzNF9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2VfZ3JvdXApKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInNjb3JlIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiYWdlX2dyb3VwIiwgImNoYXJhY3RlciIsICJmYWN0b3IiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygibWVhbiIsICJjaV9sb3dlciIsICJjaV91cHBlciIpKQpgYGAKCmBgYHtyIHMzNCBmaWd1cmUgZmFjdG9yIHNjb3JlcyBieSBhZ2UgZ3JvdXAsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSAzfQojIHBsb3QKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHkgYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSwKICAgICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjIiLCAic2NvcmVfRjEiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwgIkJvZGlseSIsICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSwKICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGZhY3RvcihhZ2VfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjaGlsZHJlbl80NiIsICJjaGlsZHJlbl83OSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiNC02eSIsICI3LTl5IikpKSwKICAgICAgIGFlcyh4ID0gY2hhcmFjdGVyLCB5ID0gc3VtbWFyeV9tZWFuLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBhZ2VfZ3JvdXApKSArCiAgZmFjZXRfd3JhcCh+IGZhY3RvciwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciksIAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCAxOSwgcmVwKDE3LCA0KSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSksCiAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hhcmFjdGVyIGFuZCBhZ2UgZ3JvdXAiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIsCiAgICAgICBzaGFwZSA9ICJBZ2UgZ3JvdXA6ICIpICMgMTAwMCBieSA1MDAKYGBgCgojIEZhY3RvciBzY29yZXMgYnkgYWdlCgojIyBTdHVkeSAxCgpgYGB7ciBzMSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CnNjb3Jlc19zMV9wbG90dGluZyA8LSBkMSAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDFfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMV9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzY29yZV9GMSIsICJzY29yZV9GMiIsICJzY29yZV9GMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgYWR1bHRzJyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJBZHVsdHMgKFN0dWR5IDEpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkeSAyCgpgYGB7ciBzMiBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDN9CnNjb3Jlc19zMl9wbG90dGluZyA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMl9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpKSwKICAgICAgIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUsIGNvbG9yID0gY2hhcmFjdGVyLCBmaWxsID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoaWxkcmVuJ3MgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQ2hpbGRyZW4gKFN0dWR5IDIpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkaWVzIDEtMgoKYGBge3IgczEyIHNjYXR0ZXIgcGx1cyBtZWFuIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDUsIGZpZy5oZWlnaHQgPSAzfQp0ZW1wQSA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDEyX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpCgp0ZW1wQiA8LSBzY29yZXNfczEyX3Bsb3R0aW5nICU+JQogIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICBhZ2UgPSAxMSkgCgpnZ3Bsb3QodGVtcEEsCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIGdlb21fcG9pbnQoZGF0YSA9IHRlbXBCLCBhZXMoeSA9IHN1bW1hcnlfbWVhbiksCiAgICAgICAgICAgICBzaXplID0gNCwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBnZW9tX2Vycm9yYmFyKGRhdGEgPSB0ZW1wQiwgYWVzKHltaW4gPSBzdW1tYXJ5X2NpX2xvd2VyLCB5bWF4ID0gc3VtbWFyeV9jaV91cHBlciwgeSA9IHN1bW1hcnlfbWVhbiksIHdpZHRoID0gMC40LAogICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNikpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IGMoNzoxMSksIGxhYmVscyA9IGMoIjd5IiwgIjh5IiwgIjl5IiwgIjEweSIsICJhZHVsdHMiKSkgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIHNjb3JlcyBieSBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkaWVzIDMtNAoKYGBge3IgczM0IGZhY3RvciBzY29yZXMgYnkgYWdlIHNldHVwLCBmaWcud2lkdGggPSA1LCBmaWcuaGVpZ2h0ID0gMTB9CnNjb3Jlc19zMzRfcGxvdHRpbmcgPC0gZDMgJT4lCiAgc2VsZWN0KGFnZV9ncm91cCwgc3ViaWQsIGFnZSwgY2hhcmFjdGVyKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkNCAlPiUKICAgICAgICAgICAgICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JQogICAgICAgICAgICAgIGRpc3RpbmN0KCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihlZmFfZDM0X2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICBtdXRhdGUoYWdlID0gaWZlbHNlKGFnZSA8IDMuNSwgTkEsIGFnZSkpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkKCmdncGxvdChzY29yZXNfczM0X3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInNjb3JlX0YxIiwgInNjb3JlX0YyIiwgInNjb3JlX0YzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIpKSwKICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAicm9ib3QiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKSwKICAgICAgICMgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgZ3JvdXAgPSBhZ2VfZ3JvdXApKSArCiAgIyBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogICMgZmFjZXRfZ3JpZChmYWN0b3IgfiBjaGFyYWN0ZXIpICsKICBmYWNldF9ncmlkKGNoYXJhY3RlciB+IGZhY3RvcikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40LCBmb3JtdWxhID0geSB+IHBvbHkoeCwgMikpICsKICAjIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40LCBmb3JtdWxhID0geSB+IHBvbHkoeCwgMykpICsKICBnZW9tX3BvaW50KHNpemUgPSAyKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgyLCAxMiwgMikpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgIiMwMEJGQzQiLCByZXAoImdyYXkiLCAyKSwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE3LCAxNSwgcmVwKDE3LCAyKSwgMTksIHJlcCgxNywgNCkpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoaWxkcmVuJ3MgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQ2hpbGRyZW4gKFN0dWRpZXMgMy00KVxuIiwKICAgICAgIHggPSAiQWdlICh5ZWFycykiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCgpnZ3Bsb3Qoc2NvcmVzX3MzNF9wbG90dGluZyAlPiUKICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJzY29yZV9GMSIsICJzY29yZV9GMiIsICJzY29yZV9GMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiKSksCiAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSksCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlKSkgKwogICAgICAgIyBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBncm91cCA9IGFnZV9ncm91cCkpICsKICAjIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgIyBmYWNldF9ncmlkKGZhY3RvciB+IGNoYXJhY3RlcikgKwogIGZhY2V0X2dyaWQoY2hhcmFjdGVyIH4gZmFjdG9yKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAyKSkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAzKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDIsIDEyLCAyKSkgKwogICMgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCByZXAoMTcsIDIpLCAxOSwgcmVwKDE3LCA0KSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hpbGRyZW4ncyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZGllcyAzLTQpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCg==